2012-12-06 163 views
1

我想在用戶點擊鏈接時設置cookie值。 我使用下面的代碼:鏈接點擊調用JavaScript函數

<script src="http://code.jquery.com/jquery-1.7.2.min.js"></script> 
<script src="../../Scripts/jquery.cookie.js" type="text/javascript"></script> 
<script type="text/javascript"> 
    $(document).ready(function() { 

     function changeLang(lang) { 
      $.cookie('myCulture', lang); 
      window.location.reload(); 
      return false; 
     } 
    }); 

</script> 

HTML

<a href="#" onclick="changeLang('da-DK')"><img src="../../Content/images/danishFlag.png" height="35px" width="35px"/></a> 

    <a href="#" onclick="changeLang('sv-SE')"><img src="../../Content/images/swedishFlag.png" height="35px" width="35px"/></a> 

看起來非常簡單的代碼,但是當我點擊鏈接,有在瀏覽器中的錯誤。 它說。

ReferenceError: changeLang is not defined 

changeLang("da-DK"); 

我在哪裏做錯了?

+0

將您的功能重新定位到文檔準備就緒 –

回答

2

您所定義的文件準備範圍內的功能,因此它只是通過移除VAR聲明或使用窗口不是全球性,因此不能在全球範圍內提供

把它定義爲一個全球性的好運氣.changeLang =功能

$(document).ready(function() { 

     changeLang = function(lang) { 
      document.cookie = 'myCulture' + lang; 
      window.location.reload(); 
      return false; 
     } 
    }); 
+0

好吧..我現在得到$。 cookie不是一項功能 – kandroid

2

jQuery的塊

$(document).ready(function() { 
}); 

function changeLang(lang) { 
     $.cookie('myCulture', lang); 
     window.location.reload(); 
     return false; 
    } 
+0

TypeError:$ .cookie不是函數 – kandroid

+0

是的,我有該文件。我把它從這裏:https://github.com/carhartl/jquery-cookie – kandroid

+0

請檢查這個小提琴它工作正常 - http://jsfiddle.net/pintu31/Y5X5T/ –

0

請不要在HTML JS附加功能這樣的定義之外的功能。 你使用jQuery所以只是這樣做:

$(document).ready(function() { 

    function changeLang() { 
     $.cookie('myCulture', $(this).data('lang')); 
     window.location.reload(); 
     return false; 
    } 
    $('.link').on('click', changeLang); 
}); 

,然後在HTML:

<a href="#" data-lang="da-DK">...</a> 
0

嘗試移動ChangeLang功能將文件準備部分之外。 另外,如果使用Firebug在FireFox中運行,您可以嘗試直接從控制檯執行該功能。

0
$(document).ready(function() { 
}); 
function changeLang(lang) { 
    document.cookie = 'myCulture=' + lang; 
    window.location.reload(); 
    return false; 
} 

這會爲你工作。