在Javascript中处理多维HTML数组

时间:2010-07-15 09:09:44

标签: javascript html multidimensional-array

我有以下用智能模板语言循环的HTML:

<td><input type="checkbox" name="confirmRelated[{$relatedIP.ipInt}_{$relatedIP.patternID}][confirm]" /></td>
<td><input type="hidden" name="confirmRelated[{$relatedIP.ipInt}_{$relatedIP.patternID}][ipInt]" value="{$relatedIP.ipInt}">{$relatedIP.robotIP}</td>
<td><input type="hidden" name="confirmRelated[{$relatedIP.ipInt}_{$relatedIP.patternID}][patternID]" value="{$relatedIP.patternID}">{$relatedIP.pattern}</td>

我正在尝试访问javascript中的字段,但到目前为止,我甚至遇到了麻烦。有人可以帮忙吗?

var boxes = document.getElementsByName('confirmRelated');
alert(boxes.length);

此刻返回0,这显然是错误的。我试图遍历所有这些并检查“确认”复选框。

任何帮助表示感谢。

3 个答案:

答案 0 :(得分:2)

您无法通过document.getElementByName()访问它们。以下应该有效:

var boxes = document.getElementsByTagName('input');
for(i = 0; i < boxes.length; i++){
    if(boxes[i].name == 'confirmRelated' && boxes[i].type == 'checkbox'){
        boxes[i].checked = 'checked';
    }
}

这将使用类型复选框检查所有输入。

编辑:使用像原型这样的框架可以让它变得更容易:

$$('input[name=^"confirmRelated"]').each(function(elm){
    if(elm.type == 'checkbox') elm.checked = 'checked';
});

答案 1 :(得分:1)

  

此刻返回0,即   显然是错的。

不,它不是。没有'confirmRelated'作为名称的元素。

循环遍历'数组'(javascript没有注意到这个数组)你应该循环所有输入字段(getElementsByTagName('input')...)并检查你的currrent元素的名称是否以' confirmRelated'(如果确实如此,做你想做的任何事情)。

答案 2 :(得分:0)

您可以使用JQuery选择器 -

$("input[name^='confirmRelated']")

因为所有输入名称都以'confirmRelated'开头,模板引擎添加了一些后缀