gpt4 book ai didi

javascript - getElementsByName 返回名称错误的元素

转载 作者:行者123 更新时间:2023-12-01 15:44:47 24 4
gpt4 key购买 nike

所以在 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

Gets a collection of objects based on the value of the NAME or ID attribute.

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

替代(无需查看任何代码)

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

最佳答案

替换

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

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

关于javascript - getElementsByName 返回名称错误的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30720920/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com