Javascript按类或id获取DOM数组中的元素索引位置

时间:2015-06-30 09:11:22

标签: javascript dom selector elements

我的情况

var domElements = document.body.getElementsByTagName('*');

现在我想返回数组项键 - 元素在数组中的位置 - (例如domElements[34])在数组中搜索具有id="asd"的元素。

我怎样才能做到这一点?

如果我想通过class="asd hey"搜索而不是ID,该怎么办?

感谢任何帮助,谢谢!

注意:不是在jquery中,在这种情况下我需要纯javascript

2 个答案:

答案 0 :(得分:3)

试试这个

var matches = document.querySelectorAll("#asd");

如果你想按班级搜索

var matches = document.querySelectorAll(".asd");

如果您想索引代码

试试这个

var domElements = document.body.getElementsByTagName('*');

for(var i=0;i<domElements.length;i++){
   if(domElements[i].id==="asd"){
      // search by id 
      // index i 
   }
   if(domElements[i].className==="asd"){
      // search by class 
      // index i 
   }
}

修改

还有另一种方法可以找到索引

试试这个

var domElements = document.body.getElementsByTagName('*');
var domList= Array.prototype.slice.call(document.body.getElementsByTagName('*'));
var itemList = Array.prototype.slice.call(document.querySelectorAll(".asd"));
console.log(domList.indexOf(itemList[0])) // if you wanna find one index

//if you wanna search all index of class 

for(var i=0;i<itemList.length;i++)
  console.log(domList.indexOf(itemList[i]))

答案 1 :(得分:1)

不是文字代码,但如果你遍历dom元素

for (var i = 0; i < parentElement.children.length; i++) {
    var item = parentElement.children[i];
    if (item.getAttribute('id') === 'asd') {
        return i;
    }
}

这假设不是选择所有DOM元素,而是简单地选择元素列表的parentElement - 这种方法更符合逻辑,当然效率更高。