IE7中的getElementsByName的相关问题

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (22)

我有一些代码可以这样做:

 var changes = document.getElementsByName(from);
 for (var c=0; c<changes.length; c++) {
   var ch = changes[c];
   var current = new String(ch.innerHTML);
   etc.
 }

这在FF和Chrome中都很好,但在IE7中就不行了。大概是因为getElementsByName不在IE中工作。什么是最好的解决办法?

提问于
用户回答回答于

如果你控制页面的HTML,另一种方法是为所有感兴趣的元素提供一个仅随数字而变化的Id,例如:

<div id="Change0">...</div>
<div id="Change1">...</div>
<div id="Change2">...</div>
<div id="Change3">...</div>

然后有这样的JavaScript:

// assumes consecutive numbering, starting at 0
function getElementsByModifiedId(baseIdentifier) {
    var allWantedElements = [];
    var idMod = 0;
    while(document.getElementById(baseIdentifier + idMod)) { // will stop when it can't find any more
        allWantedElements.push(document.getElementById(baseIdentifier + idMod++));
    }
    return allWantedElements;
}

// call it like so:
var changes = getElementsByModifiedId("Change");

用户回答回答于

有几个问题:

  1. IE的确混淆id=""name=""
  2. name="" 是不允许的 <span>

为了解决,我建议:

  1. 将所有更改name=""class=""
  2. 像这样改变你的代码:

-

var changes = document.getElementById('text').getElementsByTagName('span');
for (var c=0; c<changes.length; c++) {
 var ch = changes[c];

 if (ch.className != from)
continue;

 var current = new String(ch.innerHTML);

扫码关注云+社区