我试图通过他们的id
从HTML元素数组中访问HTML元素。我使用getElementsByTagName
创建了这个数组,我试图像这样访问这些元素:arrayName.getElementById("theId")
。
基本上这就是我想要实现的:
在由onchange事件触发的Javascript函数中,我收到引发触发器的元素的引用。由于它是一个表结构,我得到了对<td>
元素的引用。
现在,我想使用每个元素的id访问<tr>
所在的<td>
的所有其他元素。
我的代码的一个小副本:
function chngFunction(theTd){
var thisRow = theTd.parentNode;
var inputs = thisRow.getElementsByTagName("input");
alert(inputs[0].value);///////////Currently what I am doing////
alert(inputs[1].value);///////////Currently what I am doing////
.
.
.
//////// What I would like ////////
//// alert(thisRow.getElementById("myId").value); // or something like that////
/////////////// OR ///////////////
//// alert(inputs[].getElementById("myId").value); // or something like that////
///////////////////////////////////
这就是我想要的,因为目前如果我对我的jsp进行任何结构更改,我还必须对js进行更改(这可能会留下错误)。因此,使用id来访问单个元素会很棒。
请帮帮我。
答案 0 :(得分:4)
根据定义,id
值为unique throughout the entire document。因此,没有HTMLElement#getElementById
仅通过ID从该元素的后代检索元素。相反,有document.getElementById
全局查找它们(因为,id
值在文档中是全局唯一的)。因此,如果您使用id
值:
alert(document.getElementById("myId").value);
答案 1 :(得分:1)
您可以使用querySelector
API。
这应该有效:
thisRow.querySelector('#myId');
如果您的元素ID在整个文档中是唯一的(因为应该),您可以document.getElementById
。
答案 2 :(得分:1)
getElementById
是document
对象的方法,而不是节点,因此您必须以这种方式使用它:document.getElementById('id');
。
当然,这仅在HTML元素附加到DOM树时才有效。如果它们不是,你应该使用选择器API。就像塞尔吉奥在他的回答中所暗示的那样。