Kurze Antwort: Dies ist so, dass Sie etwas Verstand haben können.
Wenn Sie nicht wissen, ob Sie ein einzelnes Element erhalten werden oder eine Sammlung von Elementen, würden Sie defensiv schreiben, Typprüfung (dumm) Code wie diese
let foo = document.getElementsByTagName('h1')
if (foo instanceof HTMLCollection)
// do something with all elements
else
// do something with just one element
Es macht viel mehr Sinn für die Funktion immer einen bekannten Typ zurückgeben, ein HTMLCollection
von HTMLElement
Objekte
Wenn Sie kümmern sich nur um das erste Element erhalten, können Sie Destrukturierung Zuordnung
verwenden klar
let [first] = document.getElementsByTagName('h1')
console.log(first) // outputs just the first h1
Das ist in Ordnung, weil die Zuordnung zeigt, dass es ein Array (oder Array-like) von Elementen ist erwartet, aber kümmert sich nur um eine Kennung auf den ersten Wert zuweisen
Sie sich auch bewusst sein sollten von den neueren document.querySelector
und document.querySelectorAll
Funktionen & hellip;
document.querySelector
wird höchstens wählenein Element aus dem Dokument oder Rückkehr null
document.querySelectorAll
immer eine HTMLCollection
zurückkehren, aber leer sein, wenn keine Elemente, die die Wähler entsprechen.
Hier ist, wie ich Ihren Code im Jahr 2017 schreiben würde
setTimeout($ => {
// get the element to change
let elem = document.querySelector('h1')
// update the text of the element
elem.textContent = 'SHUSHAN'
}, 3000)
<h1>wait 3 seconds ...</h1>
Da der Rückgabetyp ein Array ist. Denken Sie darüber nach, wie viel Schmerz es wäre, wenn diese Funktion manchmal ein en-Element zurückgibt und manchmal eine Reihe von Elementen zurückgibt, das wäre Wahnsinn. – Keatinge