2011-10-27 57 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

非常感谢你的帮助。如果我可能有其他问题,在代码中使用该对象,它如何自动运行“触发”功能而不单独调用它? –