我的情况
var domElements = document.body.getElementsByTagName('*');
现在我想返回数组项键 - 元素在数组中的位置 - (例如domElements[34]
)在数组中搜索具有id="asd"
的元素。
我怎样才能做到这一点?
如果我想通过class="asd hey"
搜索而不是ID,该怎么办?
感谢任何帮助,谢谢!
注意:不是在jquery中,在这种情况下我需要纯javascript
答案 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
- 这种方法更符合逻辑,当然效率更高。