类型错误:this.getAttribute不是一个函数 - JavaScript的

类型错误: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

+0

我想'this'不包含你所想的if语句,用'的document.getElementById(“JS-当前页”)替换它'应该解决您的问题 – BeNdErR 2015-04-03 10:55:36

+0

'this'是不是指'document.getElementById('js-currentPage')' – ozil 2015-04-03 10:57:05

+0

你觉得'this'点 – semirturgay 2015-04-03 10:57:13

,如果你想重用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); 
    } 
} 
+0

这对我来说更有意义:) thx – 2015-04-03 11:00:56

+0

欢迎您:) – 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(...)