[英]Javascript get element index position in DOM array by class or id
My situation我的情况
var domElements = document.body.getElementsByTagName('*');
Now I want to return the array item key - position of the element in the array - ( for example domElements[34]
) searching in the array for the element with id="asd"
.现在我想返回数组项键 - 数组中元素的位置 -(例如domElements[34]
)在数组中搜索id="asd"
的元素。
How can I achieve this?我怎样才能做到这一点?
What if instead of ID I want to search trough class="asd hey"
?如果我想通过class="asd hey"
搜索而不是 ID 怎么办?
Any help appreciated, thank you!任何帮助表示赞赏,谢谢!
NB: Not in jquery, I need it in pure javascript in this case注意:不在 jquery 中,在这种情况下我需要纯 javascript
Try like this 这样尝试
var matches = document.querySelectorAll("#asd");
If you want to search by class 如果您想按班级搜索
var matches = document.querySelectorAll(".asd");
If you want an index of your code 如果您想要代码的索引
try like this 这样尝试
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
}
}
Edit 编辑
There another way you can find index 还有另一种方法可以找到索引
try like this 这样尝试
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]))
Not literal code but if you iterate over the dom elements 不是文字代码,而是如果您遍历dom元素
for (var i = 0; i < parentElement.children.length; i++) {
var item = parentElement.children[i];
if (item.getAttribute('id') === 'asd') {
return i;
}
}
This has the assumption that instead of selecting ALL DOM elements, you simply select the parentElement
of your list of elements - this approach is more logical and certainly a lot more efficient. 假设不选择所有DOM元素,而只是选择元素列表的parentElement
-这种方法更合乎逻辑,而且效率更高。
I think you are asking this:我想你在问这个:
var li = document.querySelectorAll("li");
function cutlistitem(lielm) {
lielm.addEventListener("click", function () {
lielm.classList.toggle("done")
})
};
li.forEach(cutlistitem);
I was creating a todo list app in which I created an unordered list of tasks to be done, in that <ul>
every task was in an <li>
.我正在创建一个待办事项列表应用程序,在该应用程序中我创建了一个要完成的任务的无序列表,其中<ul>
每个任务都在一个<li>
。 Now what I wanted is: to add an event listener to every li
element for which I needed to grab every element of li
list.现在我想要的是:为每个li
元素添加一个事件侦听器,我需要为其获取li
列表的每个元素。 I ran a forEach
loop on every element of li
list and added an event listener to each of the element.我在li
列表的每个元素上运行了一个forEach
循环,并为每个元素添加了一个事件侦听器。 To get and index of the element you can use indexOf
method.要获取元素的索引和索引,您可以使用indexOf
方法。
easiest way to do it最简单的方法
var list = [].slice.call(document.querySelectorAll('.class-name'));
var listIndex = list.filter(function(el, index){
if(el.id === 'id'){
return index;
}
})
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.