2011-10-27 62 views
-1

我有setInterval工作的標記觸發器,它在文檔中找到標記時發出警報。代碼沒有任何問題,直到我已經得到了功能轉化爲安排對象,Javascript:導致問題的對象函數

活生生的實例:

  1. 這裏是沒有對象的工作示例:http://jsfiddle.net/ae6Xc/4/
  2. 我這裏是有對象(這個問題):http://jsfiddle.net/ae6Xc/10/

這裏是沒有對象的 「原始」 工作代碼:

// looking for the special tag than save the 
// element in varabile and than alert 
(function(){ 
var win = window , 
    doc = document , 

    setInter = 'setInterval' , 
    clearInter = 'clearInterval' , 

    getByTagName = 'getElementsByTagName' , 

    KW_pluslike = 'mysite:plugin' , 

    zero = 0 , 

    element; 

    // Set 'setInterval' function as trigger 
    // to target the Special tag. 
var trigger = win[setInter](function(){ 

    // Check if such tag exist , if not repeat. When the tag 
    // has founded , it set the root to the Element var. 
    if(doc[getByTagName](KW_pluslike)[zero]){ 
     element = doc[getByTagName](KW_pluslike)[zero]; 
     win[clearInter](trigger); 
     alert("Tag Captured"); 
    } 
} , 1000 /5); 

})(); 

因此,正如我說的,我想的東西一點點安排,所以我採取了觸發功能和元素變量,並將其替換成這樣的對象:

var pluslike = { 

    element : nul , 
    trigger : win[setInter](function(){ 
     if(doc[getByTagName](KW_pluslike)[zero]){ 
      pluslike.element = doc[getByTagName](KW_pluslike)[zero]; 
      win[clearInter](pluslike.trigger); 
      alert("Tag Captured"); 
     } 
    } , 1000 /5); 
} 
pluslike.trigger; 

莫名其妙由於某種原因,它不是工作,導致問題的原因是什麼?我不知道。什麼時候開始?當我在對象中使用函數。

謝謝你提前。

+1

世界你爲什麼要使用語法來調用函數? –

+1

@Dark Falcon:或許可以更積極地縮小它。 (然而,這對於StackOverflow來說是非常複雜的)。仍然,var零似乎完全沒有意義 – hugomg

+0

...和-1對於「不工作」更明確 – hugomg

回答

1

對象文字內的分號引起了您的問題。 固定代碼:http://jsfiddle.net/ae6Xc/11/
在對象文字中,屬性應該用逗號分隔。分號不允許你的代碼的

比較,並修補代碼:

trigger : win[setInter](... , 1000 /5); //<[email protected][email protected][email protected] 
    trigger : win[setInter](... , 1000 /5) //<-- Patched, no semicolon 
+0

你能重讀這篇文章嗎?在例2中,我給你我替換的代碼,它目前在匿名函數中。看看帖子第一行的實例。 –

+0

@MorSela更新了答案。我不得不承認,我沒有在第一時間看到你的鏈接,因爲你已經在你的答案中發佈了部分代碼。 –

+0

非常感謝你的幫助。如果我可能有其他問題,在代碼中使用該對象,它如何自動運行「觸發」功能而不單獨調用它? –