Ich würde vorschlagen:
function n_siblings_same_tagname(node){
// Retrieve the tagName of the passed-in
// DOM node:
var elType = node.tagName;
// Converting the children the passed-node's
// parent's element children into an Array,
// using Array.from():
return Array.from(node.parentNode.children)
// filtering that array, using an Arrow
// which retains only those elements
// whose tagName is equal to the
// tagName of the passed-in elementary:
.filter(elem => elem.tagName == elType)
// finding the length of the filtered Array, and
// subtracting 1, as we want siblings not all
// elements of that type:
.length - 1;
}
Oder, wenn jQuery bevorzugt wird:
function n_siblings_same_tagname(element){
// we may receive a jQuery object, or a DOM
// node; here we wrap the received element
// with jQuery:
var el = $(element);
// returning the length of the number of
// sibling elements matching the
// supplied selector, here the tagName
// of the passed in element, and
return el.siblings(el.prop('tagName')).length
}
Angesichts der Antwort des OP, in den Kommentaren unten, würde ich die Alternative bieten:
function n_siblings_same_tagname(element){
// we may receive a jQuery object, or a DOM
// node; here we wrap the received element
// with jQuery:
var el = $(element);
// returning the length of the number of
// child elements matching the selector
// provided by the tagName property
// of the passed-in element:
return el.parent().children(el.prop('tagName')).length
}
Oder die geänderte JavaScript:
function n_siblings_same_tagname(node){
// Retrieve the tagName of the passed-in
// DOM node:
var elType = node.tagName;
// Converting the children the passed-node's
// parent's element children into an Array,
// using Array.from():
return Array.from(node.parentNode.children)
// filtering that array, using an Arrow
// which retains only those elements
// whose tagName is equal to the
// tagName of the passed-in elementary:
.filter(elem => elem.tagName == elType)
// finding the length of the filtered Array:
.length;
}
Die anderen divs innerhalb des div mit id = 'some_random_id' sind Kinder, nicht Geschwister. Könnten Sie bitte den Titel ändern, um das zu reflektieren? – DinoMyte
Ja, stimmt. Und wir wissen nichts über das Elternelement. Alles, was wir wissen, ist ein Zeiger auf ein Child-Element und andere Child-Elemente sind Geschwister zu dem Element, das wir kennen – user3600124
Wenn wir diese Zahlen zurückgeben, dann erhalten Sie nicht die Anzahl der Geschwister mit dem angegebenen Tag-Namen alle Kinder mit diesem Tag-Namen, Geschwister plus Original. Könnten Sie bitte Ihre Frage bearbeiten, um genau anzugeben, was Sie wollen? –