2016-08-10 6 views
0

Итак, я играл со статическими || живые нодлисты, пытаясь проверить эту концепцию, я попробовал различные сценарии, но есть два сценария, которые привлекли мое внимание:Живые и статические списки узлов

var toBeLogged = document.getElementsByTagName('p'); 
console.log(toBeLogged.length); // Returns 1 to the console 
var newEl = document.createElement('p'); 
document.body.appendChild(newEl); 
console.log(toBeLogged.length); // Returns 2 to the console 

, который имеет смысл, так как getElementsBy ... представляет собой набор живого узла, так что, очевидно, будет возвращайте обновленное значение при запросе значения снова после обновления.

но сценарий номер два с небольшим изменением делает «Live» Nodelist действуют как статические:

var toBeLogged = document.getElementsByTagName('p').length; 
console.log(toBeLogged); // Returns 1 to the console 
var newEl = document.createElement('p'); 
document.body.appendChild(newEl); 
console.log(toBeLogged); // Returns 1 also to the console 

поэтому мой вопрос: почему переменные созданные для представления свойства длины живого Нодлистом является не возвращая живое значение, как в значении переменной, представляющей непосредственно нодлист, без добавления свойств.

Я пытаюсь описать вещи точно так, как могу. Спасибо заранее. оцените свое время, потраченное на него.

ответ

1

document.getElementsByTagName('p').length возвращает неизменяемое примитивное значение, его нельзя изменить, его можно заменить только. .length возвращает новые примитивные значения каждый раз, когда вы обращаетесь к нему, а document.getElementsByTagName('p') возвращает тот же объект каждый раз.

+0

Спасибо, хорошее достаточное объяснение. оцените Maxx. – Hassan

 Смежные вопросы

  • Нет связанных вопросов^_^