getElementById()通配符

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

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

我有一个div,并且我有一些未定义的级别的子节点。

现在我必须将每个元素的ID改为一个div。如何实现?

我想,因为他们有上传ID,所以如果父项是id ='path_test_maindiv',那么下一个downer将是'path_test_maindiv_child',因此我认为我可以通过通配符来解决这个问题,例如:

document.getElementById('path_test_*')

这可能吗?或者还有其他方法吗?

提问于
用户回答回答于

不是在本地JavaScript中。你有多种选择:

1)放置类并使用getElementsByClassName,但是并不是每个浏览器都能工作

2)发挥自己的作用。类似于:

function getElementsStartsWithId( id ) {
  var children = document.body.getElementsByTagName('*');
  var elements = [], child;
  for (var i = 0, length = children.length; i < length; i++) {
    child = children[i];
    if (child.id.substr(0, id.length) == id)
      elements.push(child);
  }
  return elements;
}

3)使用库或CSS选择器。类似jQuery;)

用户回答回答于

我认为你应该从一开始就采用不同的方法,但是对于它的值,在较新的浏览器(确定,FF3.5)中,你可以使用document.querySelectorAll()jQuery获得类似的结果:

var elements = document.querySelectorAll('[id^=foo]');
// selects elements which IDs start with foo

扫码关注云+社区