Javascript:对象函数导致问题

时间:2011-10-27 14:12:38

标签: javascript

我的标签触发器由setInterval工作,当它在文档中找到标签时会发出警报。在将函数放入对象进行排列之前,代码没有任何问题,

实例:

  1. 这是一个没有对象的工作示例:http://jsfiddle.net/ae6Xc/4/
  2. 这是带对象的示例(有问题):http://jsfiddle.net/ae6Xc/10/
  3. 这是没有对象的“原始”工作代码:

    // 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 );
    
    })();
    

    正如我所说的那样,我想稍微安排一下,所以我采用Trigger函数和Element变量并将它们替换为这样的对象:

    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 个答案:

答案 0 :(得分:1)

对象文字中的分号导致您的问题。 固定代码:http://jsfiddle.net/ae6Xc/11/
在对象文字内,属性应以逗号分隔。不允许使用分号

您的代码和修补代码的比较:

    trigger : win[setInter](... ,  1000 /5 ); //<---Semicolon!!!@!@!@
    trigger : win[setInter](... , 1000 /5 )   //<-- Patched, no semicolon