2010-09-23 16 views

cevap

2

Öğeleri yineleyerek ve eşleşip eşleşmediğini kontrol ederek.

Öğenin dizinini, ailesinin içinde childNodes koleksiyonu bulunan genel kod.

function index(el) { 
    var children = el.parentNode.childNodes, 
     i = 0; 
    for (; i < children.length; i++) { 
     if (children[i] == el) { 
      return i; 
     } 
    } 
    return -1; 
} 

Kullanım:

// should return 4 
var idx = index(document.body.childNodes[4]); 
+1

gibi Array.prototype.indexOf.call() kullanabilir var mı? – amwinter

+2

Array.prototype.indexOf.call (NodeList, öğe) – anandaravindan

8

NodeList nesneyi bir Array benzeri amacıdır. Yani onu bir Diziye "dönüştürmek" mümkün.

Belki sizin için bir çözüm olabilir. nodelist bir indexof operasyonu sahip olmayan bir tasarım sebebi

var arr = Array.prototype.slice.call(yourNodeListObject); // Now it's an Array. 
arr.indexOf(element); // The index of your element :) 
+0

veya 'arr = Array.from (yourNodeListObject)' işlevini [ES6] kullanıyorsanız (https://developer.mozilla.org/en-US/ docs/Web/JavaScript/Referans/Global_Objects/Dizi /) den. – boris

29

Bu

let nodes = document.getElementsByTagName('*'); 
Array.prototype.indexOf.call(nodes, document.body); 
+0

Beni kurtardı. Teşekkürler! –