我有以下用智能模板语言循环的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,这显然是错误的。我试图遍历所有这些并检查“确认”复选框。
任何帮助表示感谢。
答案 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)
不,它不是。没有'confirmRelated'作为名称的元素。此刻返回0,即 显然是错的。
循环遍历'数组'(javascript没有注意到这个数组)你应该循环所有输入字段(getElementsByTagName('input')...)并检查你的currrent元素的名称是否以' confirmRelated'(如果确实如此,做你想做的任何事情)。
答案 2 :(得分:0)
您可以使用JQuery选择器 -
$("input[name^='confirmRelated']")
因为所有输入名称都以'confirmRelated'开头,模板引擎添加了一些后缀