我看到Google Chrome扩展程序中的一些代码使用此代码而不是文档调用getElement
:
var item = this;
item.getElement('referrer').onclick = function() {
chrome.tabs.create({url: item.referrer});
return false;
};
item.getElement('by-ext').onclick = function() {
chrome.tabs.create({url: 'chrome://extensions#' + item.byExtensionId});
return false;
}
当我在浏览器中使用示例脚本时
this.getElementById('anelement').innerHTML = 'something';
它会出错,但不起作用。
谁能告诉我为什么会这样?上述方法只能用于Google Chrome扩展程序吗?
答案 0 :(得分:0)
您可以查看“此”关键字正在执行的操作。这里有关于java脚本这个关键字https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/this
的好文档在这种情况下,“this”指的是“window”对象。
答案 1 :(得分:0)
getElementById
仅在document
上定义,而不是在任何HTMLElement
或其他任何内容上定义。
您只需查阅https://developer.mozilla.org/en-US/docs/Web/API/document.getElementById上的文档即可轻松验证这一点。
请注意,这与getElementsByClassName
等不同,可以在任何DOM元素上调用,并在下面查看匹配项。
this.getElementById
失败的原因与this.boo
失败的原因相同 - 您的this
变量上没有定义getElementById
属性/方法(除非&#39}等于document
)。