2015-06-30 91 views
0

我的情況的Javascript通過class和id

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

現在我想返回數組項鍵時,會在DOM數組元素的索引位置 - 數組中元素的位置 - (例如domElements[34])在搜索數組元素id="asd"

我該如何做到這一點?

如果不是ID,我想搜索槽class="asd hey"怎麼辦?

任何幫助表示感謝,謝謝!

注:並非jQuery的,我需要它的純JavaScript在這種情況下

+0

@fuyushimoya nope,更新的問題,我需要純js對不起:P – sbaaaang

+0

http://jsfiddle.net/kb3621gb/1/看到這個。 – Newinjava

回答

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])) 
+0

對不起,但我需要返回domElements數組中的位置,我不能直接做到 – sbaaaang

+0

位置意味着?索引? –

+0

是..............:D – sbaaaang

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--這種方法更合乎邏輯,當然效率更高。