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 に答える