[英]Javascript: switch doesn't match the variable value pulled from cookie
該腳本應計算cookie設置的次數,並在計數為1或2時執行特定的操作。由於某種原因,它與開關中的1不匹配。 我嘗試將其作為字符串“ 1”進行處理,並且嘗試過用許多不同的方式重寫它。 似乎沒有什么能與之匹敵。
<HTML>
<HEAD>
<TITLE>Hello World</TITLE>
</HEAD>
<BODY>
<SCRIPT type="text/javascript">
function SetCookie(name, value, time)
{
var expires = new Date(); expires.setTime( expires.getTime() + time ); document.cookie = name + '=' + value + '; expires=' + expires.toGMTString() + '; path=/';
}
function GetCookie(name)
{
var cookies = document.cookie.toString().split('; ');
var cookie, c_name, c_value;
for (var n=0; n<cookies.length; n++)
{
cookie = cookies[n].split('='); c_name = cookie[0]; c_value = cookie[1];
if ( c_name == name )
{ return c_value; }
}
return null;
}
function CheckTarget(e)
{
var cookieValue = GetCookie('vrOp');
if (cookieValue === null) {
var cookieOp = 1;
SetCookie('vrOp', cookieOp, 5*24*60*60*1000);
}
else {
switch(cookieValue)
{
case 1:
var cookieOp = cookieValue + 1;
alert(cookieOp);
SetCookie('vrOp', cookieOp, 5*24*60*60*1000);
break;
case 2:
var cookieOp = cookieValue + 1;
SetCookie('vrOp', cookieOp, 5*24*60*60*1000);
break;
}
}
}
function InitVr()
{
if ( document.attachEvent )
{
document.attachEvent( 'onclick', CheckTarget );
}
else if ( document.addEventListener )
{
document.addEventListener( 'click', CheckTarget, false );
}
}
InitVr();
</SCRIPT>
<script type="text/javascript">
</script>
</BODY>
</HTML>
如果它確實起作用,則第一次單擊時腳本不會產生任何反應,因為cookieValue為=== null,除了它將cookie值設置為1。在第二次單擊時,它應該警告您cookie值現在將是2。第三次單擊將不再發出警報,但是將其設置為3時,就好像沒有運行該開關一樣。
我測試了您的代碼,並使用了很多警報,發現cookieValue
確實是一個字符串。 我的猜測是,當您將開關更改為查找字符串時,為什么它似乎不起作用,是因為已經將其設置為您的開關不需要的值。
因此,按照您的代碼所示,事件的順序如下:
cookieOp
設置為值2,而是將1與其值連接起來,從而將其設置為值“ 11” 。
if (cookieValue === null) { var cookieOp = 1; SetCookie('vrOp', cookieOp, 5*24*60*60*1000); } else { cookieValue = parseInt(cookieValue, 10); switch(cookieValue) { case 1: var cookieOp = cookieValue + 1; ...
為確保此方法有效,您可能希望刪除先前測試已設置的cookie,或將default
大小寫放入您的交換機中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.