我无法解释为什么当我点击表格单元格内的按钮并尝试获取rowID时 - 我看到它未定义
这是我的代码
@model Onion.Web.ViewModels.CategoryViewModel
<script>
function btnEdit_Click()
{
var par = this.parentNode.parentNode;
alert(par.id);
}
</script>
<table>
<tr>
<td>ID</td>
<td>Title</td>
<td>Button</td>
</tr>
@foreach (var item in Model.lstCategoryLanguages)
{
<tr id='@item.CategoryLanguagesID'>
<td>@item.Title</td>
<td>@item.ShortDescription</td>
<td><input type="button" value="Edit" onclick='btnEdit_Click()' /></td>
</tr>
}
</table>
答案 0 :(得分:2)
你需要传递你想要引用的元素的函数,然后在函数中使用它。
这对我有用:
<script>
function btnEdit_Click(elem)
{
var par = elem.parentNode.parentNode;
alert(par.id);
}
</script>
<table>
<tr>
<td>ID</td>
<td>Title</td>
<td>Button</td>
</tr>
@foreach (var item in Model.lstCategoryLanguages)
{
<tr id='@item.CategoryLanguagesID'>
<td>@item.Title</td>
<td>@item.ShortDescription</td>
<td><input type="button" value="Edit" onclick='btnEdit_Click(this)' /></td>
</tr>
}
</table>
答案 1 :(得分:1)
我认为this
会返回错误的上下文。
尝试在onclick事件中传递this
,并在函数中使用该参数:
onclick='btnEdit_Click(this)'
我认为第二次绑定@item.CategoryLanguagesID
并将该函数传递给摆脱静态parentNode.parentNode
引用会更好。如果您的结构随时间变化怎么办?你也一定要修改这个功能。