Короткий ответ: Это так, что вы можете иметь здравый смысл.
Если вы не знаете, будет ли получить один элемент или набор элементов, вы должны написать оборонительную, проверку типов (глупый) код, как этого
let foo = document.getElementsByTagName('h1')
if (foo instanceof HTMLCollection)
// do something with all elements
else
// do something with just one element
Это делает намного больше смысл для функции всегда возвращает известный тип, Н. HTMLCollection
из HTMLElement
объектов
Если вы заботитесь только о получении первого элемента, вы можете использовать назначение деструктурирующих
let [first] = document.getElementsByTagName('h1')
console.log(first) // outputs just the first h1
Это нормально, потому что назначение ясно показывает, что он ожидает массив (или массив типа) элементов, но заботится только о присвоении идентификатора для первого значения
Вы также должны знать от новых document.querySelector
и document.querySelectorAll
функции & hellip;
document.querySelector
подберет в наиболееодин элемент из документа или возврата null
document.querySelectorAll
всегда будет возвращать HTMLCollection
, но может быть пустым, если ни один из элементов не соответствует селектору.
Вот как я бы написать свой код в 2017 году
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>
Поскольку тип возврата представляет собой массив. Подумайте о том, насколько больно было бы, если бы эта функция иногда возвращала элемент en и иногда возвращала массив элементов, что было бы безумием. – Keatinge