我有一个包含任意行数的表。在每个表的第一个单元格中是一个图像,其中包含对javascript函数的onclick调用,以及具有该行ID的隐藏字段。对javascript函数的调用如下所示:
<td>
<a href="#" onclick="doSomeAction(this); return false;" title="Do Something">
<img src="<?php echo($this->baseUrl());?>/images/btn_add.png" width="20" height="20" alt="Add" />
</a>
<input type="hidden" name="rowid[]" value="123" />
</td>
在我的Javascript中,我想检索id []字段的值。我尝试按如下方式访问它:
var x = obj.parentNode.childNodes;
var i,j = x.length;
for ( i=0; i<j; i++ ) {
if ( 'rowid[]' == x[i].nodeName.toLowerCase() ) {
inp.value = x[i].value;
} else {
inp.value = 999;
}
}
在所有情况下,这将返回999作为值,表示它无法找到子节点。这里没有正确完成的事情?
答案 0 :(得分:1)
x[i].nodeName
是元素的名称,例如INPUT,A,TD,DIV等。如果您想沿着这条路走下去,请查看.name
或.getAttribute('name')
此外,x应该是obj.parentNode.parentNode.childNodes
,因为parentNode是A标记。</ p>
答案 1 :(得分:1)
如果循环中出现以下块,您可以为所有html元素分配ID,然后恕我直言,您只需要将该ID传递给您的JS方法
while a loop runs{
<td id="the-tr-$id">
<a id="the-tr-href-$id" href="#" onclick="doSomeAction(this, $id); return false;" title="Do Something">
<img id="the-tr-href-img-$id" src="<?php echo($this->baseUrl());?>/images/btn_add.png" width="20" height="20" alt="Add" />
</a>
<input type="hidden" name="rowid[]" id="the-tr-input-$id" value="123" />
</td>
}
在您的方法中,您可以执行document.getElementById()
我建议为所有html元素分配ID,如果它看起来太多,那么重要的元素确实需要ID,总是有帮助。
答案 2 :(得分:0)
alwaysFalse = 'rowID[]' == anyString.toLowerCase()