2010-07-15 33 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」和模板引擎增加一些後綴給它