我知道如何使用parentNode,children和id來上下DOM,但我不知道如何通過標籤名稱來訪問兄弟或子元素。如何使用元素標記名稱上下DOM樹?
這個代碼示例有點人爲的,但我希望你可以用它來幫助我使用這些元素標籤名稱進行導航的一般答案。
//fluff to create an example
const outArr = Array(10).fill(0).map((el, i) => { return (
'<p>Title ' + i + '</p>' +
'<p>Decription ' + i + '</p>' +
'<span>Other ' + i + '</span>' +
'<button>Click to Like' + i + '!</button>'
)});
const output = outArr.join(',');
document.getElementById('ex-container').innerHTML = output;
//targeting inside anon event function for simplicity
document.getElementById('ex-container').addEventListener('click', function(e) {
if (e.target.localName == 'button') {
const curEl = e.target
const parent = curEl.parentNode;
//I can access the parent node. If I had id's, I know I could targert
//children with those. How would I target the siblings, and from the
//parentNode target a specific child by element tagName, such as p?
console.log('curEl: ', curEl);
console.log('parent: ', parent);
}
e.stopPropagation();
});
<div id='ex-container'>
<!-- everything goes here -->
</div>
獎勵:我如何透過標籤名稱較近p兄弟姐妹?
你想做的事可以用jQuery或類似的庫輕鬆完成一切。要做到這一點,沒有jQuery和直接的DOM功能,請查看https://developer.mozilla.org/en-US/docs/Web/API/Element/getElementsByTagName和Element上定義的其他函數。 –
「更近」是什麼意思?因爲在你顯示的情況下,最接近''button'的'p'將會是下面帶有「Title」的'p',除非它是最後一個'button',在這種情況下它將會不同。 –
@Daniel Williams我知道如何通過tagName來定位元素,我想知道如何在DOM上遍歷它們。例如:e.target.parentNode.span(但這不起作用,我在尋找正確的語法)。 –