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
$(document).ready(function () {
});
function changeLang(lang) {
    document.cookie = 'myCulture=' + lang;
    window.location.reload();
    return false;
}

これはあなたのために働くでしょう。

于 2012-12-06T10:54:50.407 に答える
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 に答える