考虑此JS(在body
的末尾运行并导致错误)
(function(){
"use strict";
var div = document.getElementById("hook"),
ul = div.firstElementChild,
last_li = ul.lastElementChild;
alert(div) // alerts "Uncaught TypeError: Cannot read property 'children' of undefined"
})();
然后,我删除了逗号并添加了
var
关键字,但是收到了类似的错误(不是HTML):(function(){
"use strict";
var div = document.getElementById("hook");
var ul = div.firstElementChild;
var last_li = ul.lastElementChild;
alert(div) // alerts "Uncaught TypeError: Cannot read property 'lastElementChild' of undefined "
})();
它唯一可行的方法是在
alert()
赋值之后直接添加div
语句。我假设这与可变吊装有关,但经验不足以肯定。有人可以简要介绍一下变量吊装吗,这可能是怎么回事?谢谢!
最佳答案
这不是吊装。
以下是发生的情况:
(function(){
"use strict";
// this returns an element otherwise the next line would not work
// that means the element is found in the DOM
var div = document.getElementById("hook"),
// this returns the value `undefined` or `null`
ul = div.firstElementChild,
// this is a TypeError, since `ul` is undefined
last_li = ul.lastElementChild;
alert(div) // we never actually get to this line
})();
您的元素中可能没有元素(也许只是文本节点?)
这是fiddle reproducting the issue。
这是fiddle where it works。
关于javascript - 可能的变量吊装问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21097684/