在链接点击上调用javascript函数

时间:2012-12-06 10:29:05

标签: javascript jquery html asp.net-mvc cookies

我想在用户点击链接时设置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");

我在哪里做错了?

5 个答案:

答案 0 :(得分:2)

在jquery块之外定义函数

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

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

答案 1 :(得分:2)

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

通过删除var声明或使用window.changeLang = function

将其定义为全局
 $(document).ready(function () {

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

答案 2 :(得分: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>

答案 3 :(得分:0)

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

祝你好运

答案 4 :(得分:0)

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

这对你有用。

相关问题