>我有这个代码片段:
function switchEvent() {
if (this.lastChild.tagName == "img" ) {
var remove = this.lastChild;
this.removeChild(remove);
}
else {
console.log(this.lastChild);
var image = document.createElement('img');
}
}
请注意,在第二部分中,当我检查控制台.log时,它会打印出来:
<img height="20" width="75" src="btn2.png" style="left: -14px; right: 0px;">
它只是跳过"如果"并跳到"其他"。呃,什么?
编辑:为了填写您,这是一个点击事件。因此,"this"是指单击的元素。
尝试
if (this.lastChild.tagName == "IMG") {
// ...
"tagName"属性是大写的。或者,你不能做出这个假设并强迫这件事:
if (this.lastChild.tagName.toLowerCase() == "img") {
// ...
也应该工作。但是,如果您的最后一个子节点不是具有标签名称的节点(例如,如果它是文本或注释节点),则第二个版本将遇到问题。 你会得到一个例外,但不是第一个。 你可以做一个明确的undefined
测试,但大写约定实际上是在HTML DOM Level 1规范中,所以这是一个非常安全的假设。(编辑 一位聪明人指出,.nodeName
属性将始终存在,并且它与元素节点的.tagName
相同。它也是大写的。