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;
       }

我用 addClass 函数替换了“设置 Cookie”警报,或者我是这么认为的。

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

问题是该功能根本不起作用。如果只留给alerts,没有问题,但是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 回答