为什么 name 属性无法使用 JavaScript 进行设置

why name attribute couldn't set using javascript?

本文关键字:JavaScript 设置 name 属性 为什么      更新时间:2023-09-26

我希望在 JavaScript 中更改 name 属性,但我无法使用 element.namesetAttribute() 方法更改 name 属性。有没有其他方法可以设置 name 属性?

var status_Element = document.getElementsByName("BD_task_status_"+old_id+"[]");
var final_status_Element = document.getElementsByName("BD_final_task_status_"+old_id+"[]");                         
for(var in_count=0;in_count<status_Element.length;in_count++)
{                   
    status_Element[in_count].name="BD_task_status_level"+inner_count+"[]";
    final_status_Element[in_count].name="BD_final_task_status_level"+inner_count+"[]";
}

按照示例中设置 name 属性将起作用(除了 inner_countin_count拼写错误)。问题是getElementsByName返回元素的实时集合。当您更改索引 0 处的元素名称时,它不再属于集合,并且集合会删除它;那么曾经位于索引 1 处的元素现在位于索引 0 处。但与此同时,你增加了in_count,所以你永远不会改变这个元素。其中一半最终不会改变。

也:

  1. 向后循环访问集合以更改名称(因为那时消失的元素在末尾,您不在乎),或者

  2. 请改用querySelectorAll,这将为您提供快照集合(而不是实时集合)。(querySelectorAll在所有现代浏览器和IE8上都受支持。