1

当用户单击链接时,我想设置一个 cookie 值。我正在使用以下代码:

<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");

我哪里做错了??

4

5 回答 5

2

在 jquery 块之外定义函数

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

function changeLang(lang) {
        $.cookie('myCulture', lang);
        window.location.reload();
        return false;
    }
于 2012-12-06T10:30:39.057 回答
2

您在文档就绪范围内定义函数,因此它不是全局的,因此在全局范围内不可用

只需删除 var 声明或使用 window.changeLang = function 即可将其定义为全局

 $(document).ready(function () {

       changeLang = function(lang) {
            document.cookie = 'myCulture' + lang;
            window.location.reload();
            return false;
        }
    });
于 2012-12-06T10:33:29.830 回答
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>
于 2012-12-06T10:32:11.653 回答
0

尝试将 ChangeLang 函数移到 Document Ready 部分之外。此外,如果使用 Firebug 在 FireFox 中运行,您可以尝试直接从控制台执行该功能。

祝你好运

于 2012-12-06T10:33:25.867 回答
0
$(document).ready(function () {
});
function changeLang(lang) {
    document.cookie = 'myCulture=' + lang;
    window.location.reload();
    return false;
}

这对你有用。

于 2012-12-06T10:54:50.407 回答