2009-12-13 5 views
0

내 사이트에 div를 표시하고 있으며이 div를 사용자가 내 사이트를 방문했을 때만 5 번 표시하고 싶습니다. 그래서 5 번이 지난 후에는 더 이상 div를 보여주지 않을 것입니다.자바 스크립트 쿠키, 약간의 도움을주세요

쿠키로 할 수 있습니다. 하지만 저는 PHP에 대해서만 잘 알고 있습니다. Javascript가 내 장점이 아닙니다.

누구나 쿠키를 설정하고 방문 할 때마다 코드를 늘리면됩니다. 값이 5보다 큰 경우 더 이상 DIV를 표시하지 않습니까? 또한 세 가지 매우 편리한 도우미 기능 (아래로 스크롤)을 포함

감사

답변

0

변수를 쿠키에서 방문하게하는 경우에는 주로 이와 비슷한 것을 사용하십시오.

function getCookie(c_name) 
{ 
if (document.cookie.length>0) 
    { 
    c_start=document.cookie.indexOf(c_name + "="); 
    if (c_start!=-1) 
    { 
    c_start=c_start + c_name.length+1; 
    c_end=document.cookie.indexOf(";",c_start); 
    if (c_end==-1) c_end=document.cookie.length; 
    return unescape(document.cookie.substring(c_start,c_end)); 
    } 
    } 
return ""; 
} 

var visits = getCookie("visits_number"); 

if (visists > 5) 
    document.getElementById("your_div_name").setAttribute("style", "visibility: hidde"); 
+0

HTML 문서에서'setAttribute'를 사용하지 마십시오. IE에는 많은 버그가 있습니다. 그 중 하나는 '스타일'이 작동하지 않는다는 것입니다. 'getElementById (...). style.display = 'none ''을 제안하십시오. – bobince

0

Quirksmode has an article discussing cookies. 이 기사를 읽으면 어쨌든 모든 내용이 명확 해집니다.

모든 정보가 문자열로 저장되므로 문자열로 검색된다는 점을 기억하십시오. 따라서 데이터 조작을 수행하기 전에 반드시 수동 유형의 저글링을 수행해야합니다.

var x = 1; 
createCookie("myVar", x); 

var newX = readCookie("myVar") + 1; 

alert(newX); // "11" 

// --- instead, do this: --- 

var newX = parseInt(readCookie("myVar"), 10) + 1; 
0

아무도 당신이 요구하는 코드의 조각을 정확하게 없을 것이다, 그러나이 두 필요한 기능부터, 스스로를 구성하기 용이해야한다 : 여기를 참조하십시오의 당신을 가정 해 봅시다

function createCookie(name,value,days) { 
    if (days) { 
     var date = new Date(); 
     date.setTime(date.getTime()+(days*24*60*60*1000)); 
     var expires = "; expires="+date.toGMTString(); 
    } 
    else expires = ""; 
    document.cookie = name+"="+value+expires+"; path=/"; 
} 

function readCookie(name) { 
    var nameEQ = name + "="; 
    var ca = document.cookie.split(';'); 
    for(var i=0;i < ca.length;i++) { 
     var c = ca[i]; 
     while (c.charAt(0)==' ') c = c.substring(1,c.length); 
     if (c.indexOf(nameEQ) == 0) 
      return c.substring(nameEQ.length,c.length); 
    } 
    return null; 
} 
관련 문제