TypeError:this.getAttribute 不是一个函数 - javascript
2015-04-03
9654
我不明白为什么我无法在下面的代码中获取“this”的属性:
var Deferjs = {
init: function(){
if(document.getElementById('js-currentPage')!=null){
var file = this.getAttribute('data-page');
Deferjs.LoadJs(file);
}
},
LoadJs:function(file){
alert("ok");
}
}
Deferjs.init();
但是如果我将 this.getAttribute('data-page'); 更改为 document.getElementById('js-currentPage').getAttribute 就可以了
请帮助我理解上述内容
谢谢
3个回答
如果您想重用
document.getElementById('js-currentPage')
,请将其保存在变量中。您不能使用
this
引用它,在您的情况下
this
指向容器对象 (
DeferJs
)
init: function(){
var elem=document.getElementById('js-currentPage');
if(elem!=null){
var file = elem.getAttribute('data-page');
Deferjs.LoadJs(file);
}
}
semirturgay
2015-04-03
if(document.getElementById('js-currentPage')!=null){
var file = this.getAttribute('data-page');
此处
this
将引用
Deferjs
。如果您想在其他地方访问它,则必须将对 DOM 的引用存储到变量中。
var ele = document.getElementById('js-currentPage');
if(ele!=null){
var file = ele.getAttribute('data-page');
mohamedrias
2015-04-03
您的 init 函数位于 Deferjs 中,因此,当您使用“this”时,它指的是 Deferjs。Deferjs 没有名为 getAttribute 的函数。您需要使用
document.getElementById('js-currentPage').getAttribute(...)
Emre Türkiş
2015-04-03