2013-05-10 51 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實現的一部分。