如何获取 JavaScript onclick 的调用元素的 ID

How do get id of calling element for JavaScript onclick

我有一个 GridView,其中每一行都有信息,当用户点击更多相关行时,信息显示在单独的 DIV 中(这有效)但是当我想访问行时(以change/add css 类 单击)我无法定位该行。如何定位 JavaScript onclick 事件分配到的行?

这是代码的精简版:

protected void vd_gv_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow) 
    {
        e.Row.Attributes.Add("onclick", "showTest(this)");
    }
}

这里是调用onclick的JS:

<script type="text/javascript">
    function showTest(test) {
        // var rowTest1 = document.getElementById(this);
        // var rowTest2 = document.getElementById(this.id);
        // var rowTest3 = document.getElementById(test);
        // var rowTest4 = document.getElementById(test.id);

        var row = document.getElementById(test.id);
        var currentClass = row .className;

        row.className += "testClass";
    }
</script> 

调试页面时出现以下错误:

Empty string passed to getElementById().

你可以试试test.target.id 因为我认为您在单击按钮时调用了一个事件。所以这将通过该测试中的事件。

最后我是这样做的:

row.Attributes["id"] = gv.ID + "_row_" + e.Row.RowIndex.ToString();

并在此处获取参考:

var row = document.getElementById(test.id);