2015-04-03 214 views
0

我想不通,爲什麼我不能得到的「這個」的屬性在下面的代碼:類型錯誤: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

回答

2

,如果你想重用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

1
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'); 
0

您的init函數駐留在Deferjs中,因此,當您使用「this」時,它指的是Deferjs。 Deferjs沒有名爲getAttribute的函數。你需要使用

document.getElementById('js-currentPage').getAttribute(...) 
相關問題