0

我有以下 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 的方法。还有什么办法吗?

4

3 回答 3

2

对于这个特定的问题,您不应通过名称访问 DOM 元素,而应通过其 id 访问它们。

foo = document.getElementById("someID"); //Its unique
于 2012-04-11T20:26:31.253 回答
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() 所做的,但不是先按标签搜索。

于 2012-04-11T20:32:02.967 回答
0

getElementsByName() 方法访问具有指定名称的所有元素。

当您为每个选择指定不同的名称时,您可以直接访问它。

var x=document.getElementsByName("day");

不需要父母

于 2012-04-11T20:23:04.400 回答