为什么name属性不能使用javascript设置?

时间:2016-04-27 12:17:23

标签: javascript

我希望在JavaScript中更改动态的name属性,但我无法使用nameelement.name方法更改setAttribute()属性。有没有其他方法可以设置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+"[]";
}

1 个答案:

答案 0 :(得分:4)

如您的示例中那样设置name属性将起作用(inner_count vs in_count错字除外)。问题是getElementsByName会返回实时元素集合。当您在索引0处更改元素的名称时,它不再属于集合,并且集合将其删除;那么以前在索引1的元素现在是索引0.但与此同时,你增加了in_count,所以你永远不会改变那个元素。其中一半最终没有被改变。

或者:

  1. 在集合中向后循环以更改名称(从那时起消失的元素就在最后但你不在乎),或者

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