var domElements = document.body.getElementsByTagName('*');
現在我想返回數組項鍵時,會在DOM數組元素的索引位置 - 數組中元素的位置 - (例如domElements[34]
)在搜索數組元素id="asd"
。
我該如何做到這一點?
如果不是ID,我想搜索槽class="asd hey"
怎麼辦?
任何幫助表示感謝,謝謝!
注:並非jQuery的,我需要它的純JavaScript在這種情況下
var domElements = document.body.getElementsByTagName('*');
現在我想返回數組項鍵時,會在DOM數組元素的索引位置 - 數組中元素的位置 - (例如domElements[34]
)在搜索數組元素id="asd"
。
我該如何做到這一點?
如果不是ID,我想搜索槽class="asd hey"
怎麼辦?
任何幫助表示感謝,謝謝!
注:並非jQuery的,我需要它的純JavaScript在這種情況下
嘗試這樣
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]))
不是字面的代碼,但如果你遍歷DOM元素
for (var i = 0; i < parentElement.children.length; i++) {
var item = parentElement.children[i];
if (item.getAttribute('id') === 'asd') {
return i;
}
}
這有一個假設,不是選擇所有DOM元素,只需選擇元素列表中的parentElement
--這種方法更合乎邏輯,當然效率更高。
@fuyushimoya nope,更新的問題,我需要純js對不起:P – sbaaaang
http://jsfiddle.net/kb3621gb/1/看到這個。 – Newinjava