0

次のJSコードを見つけました(私のものではありません。クレジットはMichael Regan、www.owt4nowt.caに帰属します)

したがって、コード:

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>


<script>
var key_value = "myTestCookie=true";
var foundCookie = 0;

// Get all the cookies from this site and store in an array
var cookieArray = document.cookie.split(';');

    for(var i=0;i < cookieArray.length;i++)
        {
               var checkCookie = cookieArray[i];
               while (checkCookie.charAt(0)==' ')
               {
                 checkCookie = checkCookie.substring(1,checkCookie.length);
               }

                if (checkCookie.indexOf(key_value) == 0)
               {
                  alert("Found Cookie ");
                   foundCookie = 1;
               }
    }
    if ( foundCookie == 0)
    {
        document.cookie = key_value;
        alert("Setting Cookie");
    }  
</script>

アラートは確実に機能します。

ただし、Cookie が認識されたときにアラートを削除しました。

        if (checkCookie.indexOf(key_value) == 0)
       {
           foundCookie = 1;
       }

そして、「Setting Cookie」アラートを addClass 関数に置き換えたか、そう思いました。

if ( foundCookie == 0)
{
    document.cookie = key_value;
    $('.someClassHere').addClass("newClass");
}  

問題は、機能がまったく機能しないことです。アラートだけにしておけば問題ないのですが、addClass関数は完全無視です。

addClass 関数に構文エラーがありますか?

4

1 に答える 1

0

多くの良いコメントとヒントを受け取った後、「alun」が javascript を jQuery .ready() API でラップすることを提案した後、最良の結果が得られました。

クラスを追加 (または削除) するスクリプトの有効性に顕著な遅延がありましたが、少なくとも機能はあり、CSS などの適切な組み合わせにより、混乱を最小限に抑えることができます。

私が使用した結果の成功したコードは次のとおりです。

<script type="text/javascript">
$(document).ready(function () {
 var key_value = "myTestCookie=true";
 var foundCookie = 0;
 var cookieArray = document.cookie.split(';');
     for(var i=0;i < cookieArray.length;i++)
         {
                var checkCookie = cookieArray[i];
                while (checkCookie.charAt(0)==' ')
                {
                  checkCookie = checkCookie.substring(1,checkCookie.length);
                }
                 if (checkCookie.indexOf(key_value) == 0)
                {
                    foundCookie = 1;
                }
     }
     if ( foundCookie == 0)
     {
         document.cookie = key_value;
       $('.someClassOne').removeClass("extraClass");
     } 
});
</script> 

だから、ええ、これが他の人に役立つことを願っています!

フォーラムをありがとう!

/ブライアン

于 2012-08-11T05:28:14.233 に答える