类型错误:this.getAttribute不是一个函数 - JavaScript的
我想不通,为什么我不能得到的“这个”的属性在下面的代码:类型错误:this.getAttribute不是一个函数 - JavaScript的
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(”数据页');到的document.getElementById( 'JS-当前页')。它的getAttribute工作
请帮助我了解上述
THX
,如果你想重用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);
}
}
这对我来说更有意义:) thx – 2015-04-03 11:00:56
欢迎您:) – semirturgay 2015-04-03 11:01:25
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');
您的init函数驻留在Deferjs中,因此,当您使用“this”时,它指的是Deferjs。 Deferjs没有名为getAttribute的函数。你需要使用
document.getElementById('js-currentPage').getAttribute(...)
我想'this'不包含你所想的if语句,用'的document.getElementById(“JS-当前页”)替换它'应该解决您的问题 – BeNdErR 2015-04-03 10:55:36
'this'是不是指'document.getElementById('js-currentPage')' – ozil 2015-04-03 10:57:05
你觉得'this'点 – semirturgay 2015-04-03 10:57:13