我有以下html代码段
<table>
<tr>
<td><select name="day">
</select></td>
<td><select name="time">
</select></td>
<td><select name="closed" onchange="dosomething(this)">
</select></td>
</tr>
</table>
当我改变某些东西时,我想得到一个句柄并对其进行一些操作。我如何获得javascript的句柄?
function closedChanged(object)
{
try
{
var parent=object.parentNode.parentNode;
var day = parent.getElementsByName("day")[0];
}
catch(e)
{
alert(e);
}
}
这里我收到错误,说HTMLTableRowElement没有名为getElementsByName的方法。还有别的吗?
答案 0 :(得分:2)
对于这个特定问题,您不应该按名称访问DOM元素,而应该通过其ID访问它们。
foo = document.getElementById("someID"); //Its unique
答案 1 :(得分:1)
你也可以尝试获取所有选择元素,循环遍历它们并检查它们的名称:
var parent = obj.parentNode.parentNode;
var selects = parent.getElementsByTagName("select");
for (var i = 0; i < selects.length; i++) {
if (selects[i].name == "day") {
// selects[i] is the target
}
}
我确定它类似于document.getElementsByName()所做的,但不是先按标签搜索。
答案 2 :(得分:0)
getElementsByName()方法访问具有指定名称的所有元素。
当您为每个选择指定不同的名称时,您可以直接访问它。
var x=document.getElementsByName("day");
不需要父母