我有一个包含多个同名输入(文本)元素的表单
<input name="val[]" type="text" />
<input name="val[]" type="text" />
<input name="val[]" type="text" />
现在,假设我想将他们的名字改为“val2[]”。
这是我最初写的:
var vals=document.getElementsByName("val[]");
var valct=vals.length;
for( var i=0; i<valct; i++ )
vals[i].name="val2[]";
然而,这似乎让我犯了一个错误。
从 Chrome 的开发人员工具中,它显示“无法设置未定义的属性‘名称’”
想了一会儿,我想这个元素可能在重命名后会被删除。
因此,我将代码的最后一行更改为:
vals[ 0 ].name="val2[]";
这行得通!
但是后来,我在想我是否可以这样编码:
while( vals=document.getElementsByName("val[]") )
vals[0].name="val2[]";
这给了我在“无法设置未定义的属性'名称'”上面遇到的相同错误,
我很困惑。我也用 Firefox 测试过,结果是一样的。(无法在 IE 上测试,因为我在页面上使用 HTML5 原生 DnD)
在我看来,getElementsByName 返回的是一个队列,而更改名称则相当于从中删除项目。
这是真的?或者对此的正确解释是什么?