2010-07-15 27 views
2

我有以下的HTML已经在智者的模板语言周围循环:处理Mutlidimensional HTML阵列在Javascript

<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,这显然是错误的。我试图循环浏览所有这些文件,并选中“确认”复选框。

任何帮助表示赞赏。

回答

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

现在返回0,这是 显然是错的。

不,它的不是。没有以'confirmRelated'作为名称的元素。你应该循环遍历所有的输入字段(getElementsByTagName('input')...),并检查你的currrent元素的名字是以什么开头的(如果你的数组没有注释掉,那么这个数组就不会被忽略) 'confirmRelated'(如果是的话,做任何你想做的事情)。

0

您可以使用jQuery selector-

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

,因为所有的输入名称都开始“confirmRelated”和模板引擎增加一些后缀给它