2015-10-01 29 views
1

我目前正試圖實現一個菜單,其中包含許多可點擊的按鈕 - 開胃菜,湯等。通過使用參數,我可以將食物類型發送到我的JavaScript。
這些是按鈕。
http://puu.sh/kugEs/5048221343.jpgHTML使用onclick輸入來運行javascript代碼

這是我點擊開胃菜時的代碼。

function scroll(type) { 
    var test = "('#" + type + "')"; 
    alert(test); //('#appetizers') 

    $("html, body").animate({ scrollTop: $test.offset().top-150 }, 600); //this doesnt work 
    $("html, body").animate({ scrollTop: $('#appetizers').offset().top-150 }, 600); //this works 
} 

當然我想這樣做,我不必手動使用工作線。我想使用一個不起作用的函數,它可以應用於所有運行相同函數但只有不同參數的按鈕。

如何使用var測試來運行不起作用的線?

+0

在創建變量test時,您使用括號作爲字符串。相反,將test定義爲您想要的選擇器:test ='#'+ type。然後$(test).offset()。top .... – Ari

+0

您可以在google chrome中使用檢查器元素,併爲您的代碼添加一個斷點。我認爲這可能是最簡單的方法。 – Photonic

+0

感謝大家的快速回復!修復。 –

回答

4

您應該使用$,並採取有關你的報價護理::

var $test = $('#' + type); // Now it's a jQuery Object 

在您的例子:

function scroll(type) { 
    var $test = $('#' + type); 
    $("html, body").animate({ scrollTop: $test.offset().top-150 }, 600); 
} 
2

你應該定義$測試作爲一個對象,而不是字符串。

function scroll(type) { 
    var test = $('#' + type); 
    alert($test.attr("id")); // appetizers 
    $("html, body").animate({ scrollTop: $test.offset().top-150 }, 600); 
} 
-1

使用此代碼嘗試。它應該工作。

function scroll(type) { 
    var test = "('#" + type + "')";  
    alert(test); //('#appetizers') 
    $("html, body").animate({ scrollTop: $('#'+type).offset().top-150 }, 600); 
} 
相關問題