getElementsByName返回名称错误的元素

时间:2015-06-08 23:57:48

标签: javascript dom

所以在JS中我克隆了一个元素并更改了所有子元素name以更改其索引(例如instanceActeurRole[0].siteId变为instanceActeurRole[3].siteId

...
<table>
<tbody id="rolesdiv_xxxx">
    <input type="hidden" name="instanceActeurRole[0].siteId" value="920501">
</table>
...

var originalRolesDiv = document.getElementById("rolesdiv_xxxx");
var tableRoles = originalRolesDiv.parentNode;
var cloneRolesDiv = originalRolesDiv.cloneNode(true);
var inputElements = cloneRolesDiv.getElementsByTagName("input");
var nouveauIndex = 3;
for(var j = 0 ; j < inputElements.length ; j++){
    if(inputElements[j].name.indexOf('instanceActeurRole[0]') == 0) {
        inputElements[j].name = inputElements[j].name.replace("0",nouveauIndex);
    }
}
tableRoles.appendChild(cloneRolesDiv);

现在我做的时候

>>document.getElementsByName("instanceActeurRole[0].siteId").length
2
>>document.getElementsByName("instanceActeurRole[0].siteId")[1].name
"instanceActeurRole[3].siteId"
>>document.getElementsByName("instanceActeurRole[0].siteId")[1].getAttribute('name')
"instanceActeurRole[3].siteId"
>>document.getElementsByName("instanceActeurRole[0].siteId").length
2
>>document.getElementsByName("instanceActeurRole[0].siteId")[0].name
"instanceActeurRole[0].siteId"
>>document.getElementsByName("instanceActeurRole[0].siteId")[0].id
""
>>document.getElementsByName("instanceActeurRole[0].siteId")[1].name
"instanceActeurRole[3].siteId"
>>document.getElementsByName("instanceActeurRole[0].siteId")[1].id
""

我正在兼容模式下使用IE8,因此根据文档MSDN - getElementsByName method

  

根据 NAME ID 的值获取对象的集合   属性。

我的问题是:为什么getElementsByName("instanceActeurRole[0].siteId")方法会返回名为instanceActeurRole[3].siteId的元素?

ALTERNATIVELY(无需查看任何代码)

在哪种情况下getElementsByName(elemName)会返回一个与传递给方法的名称不同的元素?

2 个答案:

答案 0 :(得分:-1)

替换

UIImage* image = [[UIImage imageNamed:@"yourImage.png"] imageRotatedByDegrees:degrees];
annView.image = image;

if(inputElements[j].name.indexOf('instanceActeurRole[0]') == 0) {
    inputElements[j].name = inputElements[j].name.replace("0",nouveauIndex);
}

答案 1 :(得分:-1)

您的问题为什么getElementsByName方法返回元素名称instanceActeurRole [3] .siteId

omg,你做了:

var nouveauIndex = 3;

然后将名称设置为

'instanceActeurRole[0].siteId'.replace('0', nouveauIndex)

你期望它是什么?! ?! ?!除了instanceActeurRole [3] .siteId ?! ?! ?!