2013-05-10 33 views
2

IM困惑这个错误,我成了无待办事项无论如何像点击等 是的,我使用的搜索在这里,但在所有的情况下,我发现情况是另一个问题。语法错误:函数语句需要一个名字

的 “语法错误:函数语句需要一个名字” 是一个pagerefresh这里投掷后通过萤火虫:onGoTo:function(evt){

这是我的函数:

function exampleFc(ctx){ 
'use strict'; 

    var goTo = $('a[href*=#]',this.$ctx); 
    goTo.on('click',$.proxy(this.onGoTo,this)); 

onGoTo:function(evt){ 
    evt.preventDefault(); 
    var elem = $(evt.currentTarget).attr('href'); 

    if(elem.length > 1){ 
     $('html,body').animate({ 
      scrollTop: $(elem).offset().top 
     }, 700, function(){location.hash = elem;}); 
    } 
    return false; 
} 

};

怎么了?我想通过捕获点击事件来调用GoTo函数。

+0

看起来像你使用'this'错误以及 – Bergi 2013-05-10 10:59:41

回答

3

语法不正确。该语法只能用于对象内部。

var obj = { onGoTo: function(){ } } 

比对象等你应该使用这个语法方面:

var onGoTo = function() { }; // function declaration 
onGoto() // function call 

,或者在你的代码的情况下,

this.onGoTo = function() {}; // function declaration 
    this.onGoTo(); // function call 

最后你的代码应该是这样的:

function exampleFc(ctx){ 
    'use strict'; 

    var goTo = $('a[href*=#]',this.$ctx); 
    goTo.on('click',$.proxy(this.onGoTo,this)); 

    this.onGoTo = function(evt) { 
     evt.preventDefault(); 
     var elem = $(evt.currentTarget).attr('href'); 

     if(elem.length > 1){ 
      $('html,body').animate({ 
       scrollTop: $(elem).offset().top 
      }, 700, function(){location.hash = elem;}); 
     } 
     return false; 
    } 
} 
+0

嗯,好吧听起来不错。你能告诉我如何在第二个例子中调用函数吗?所以我的意思是我怎么可以用我的goTo.on('click',...)来调用它。我不能在这里打电话只有一个变种。感谢 – JohnDoo 2013-05-10 08:24:56

+0

它可以像其他功能一样被调用。但它应该在调用之前声明:) – 2013-05-10 11:00:02

+0

我编辑了答案:) – 2013-05-10 11:07:59

0

确定,作为普拉卡什GPZ一个我说的是语法错误。

我来解决了这个问题的解决方案是:

function exampleFc(ctx){ 
'use strict'; 

var onGoTo = function(evt){ 
    evt.preventDefault(); 
    var elem = $(evt.currentTarget).attr('href'); 

    if(elem.length > 1){ 
     $('html,body').animate({ 
     scrollTop: $(elem).offset().top 
    }, 700, function(){location.hash = elem;}); 
} 
return false; 
}; 

var goTo = $('a[href*=#]',ctx); 
goTo.on('click',onGoTo)); 

};

顺便说一下,你上面的功能,可以使用在任何地方DOM滚动。 确保滚动链接的href属性以#Symbol开头,并且该ID存在。

最好

0

这条线会导致你的错误

onGoTo:function(evt){ 

因为里面的功能不能使用对象语法并有能力使用=而不是:

var onGoTo = function(evt){ 

注意,代理对象是es6实现的一部分。