简体   繁体   English

访问表td内的html select元素

[英]accessing html select element which is inside table td

I have the following html snippet 我有以下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>

When i change something on , then i would like to get a handle to and do some operation on it. 当我在上更改某些内容时,我想对其进行处理。 How do i get a handle to in javascript? 如何获取JavaScript的句柄?

function closedChanged(object)
{
    try
    {
        var parent=object.parentNode.parentNode;
        var day = parent.getElementsByName("day")[0];
    }
    catch(e)
    {
        alert(e);
    }
}

Here i am getting error saying that HTMLTableRowElement does not have method called getElementsByName. 在这里,我收到错误消息,说HTMLTableRowElement没有名为getElementsByName的方法。 Any other way? 还有其他方法吗?

对于此特定问题,您不应按其名称访问DOM元素,而应按其ID访问它们。

foo = document.getElementById("someID"); //Its unique

You could also try getting all select elements, looping through them and checking their name: 您也可以尝试获取所有选择元素,循环遍历它们并检查其名称:

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
    }
}

I'm sure it's similar to what document.getElementsByName() does but not searching by tag first. 我确定它类似于document.getElementsByName()所做的事情,但不是先按标记搜索。

The getElementsByName() method accesses all elements with the specified name. getElementsByName()方法访问具有指定名称的所有元素。

As you given different name for each select you can access it directly. 由于您为每个选择指定了不同的名称,因此可以直接访问它。

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

no need of parent 不需要父母

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM