下面代碼中的pastPath變量令我感到困惑。我通常使用C#和MVC,這當然意味着我使用HTML,JavaScript和JQuery以及其他相關的網絡/移動技術。對javascript/jquery變量作用域感到困惑
當我運行此代碼並單擊.moreBtn pastPath報告時,它將按照我的意圖設置爲URL。然而,當我嘗試使用.backBtn來設置URL並強制瀏覽器返回上一頁時,我得到的是pastPath未定義,或者它被設置爲hello。
我知道我在這裏有一個問題的理解範圍。我已經閱讀了關於JavaScript範圍的文章,但是我想知道是否有人可以解決這個問題,並解釋我如何從第一個函數獲取URL到第二個函數。
我將在後面閱讀更多關於範圍的內容,但它在大多數其他語言中的範圍看起來非常不同,我目前沒有時間正確地研究它。
$(document).ready(function()
{
pastPath = "hello";
$(".moreBtn").click(function()
{
var controller = $(".moreBtn").data('ctrl');
var action = $(".moreBtn").data('action');
loc = GetPathDetails("full"); //This simply returns the part of the URL I need.
pastPath = loc;
alert(pastPath);
var fullPath = loc + "/" + controller + "/" + action;
window.location = fullPath;
});
$(".backBtn").click(function()
{
alert(pastPath);
//window.location = pastPath;
});
});
感謝您的幫助。
擺脫'this.',它應該工作。不要忘記用'var pastPath'來初始化'pastPath';' – Blender
編輯的問題,當我按照建議去除這個問題時,我在第二個函數中得到hello。謝謝你的幫助。 –
@Juhana我不明白,你有什麼困難。我覺得,pastPath應該在第一個函數中點擊設置,並且應該在第二個函數中輕鬆讀取,因爲它是在兩個外面定義的,但這不會發生。所以我想知道我做錯了什麼,以及如何解決它。它應該很簡單。謝謝你的幫助。 –