2015-06-17 144 views
1

我想每次用户在网站上时只显示一次div元素一次。我已经看到类似问题的多个答案,但他们都没有工作......我写了一个代码,但它不工作......我从其他地方得到了一部分代码(我可以不记得)那么为什么它不起作用?每次用户在网站上时只显示一次div

下面的代码

<script type="text/javascript"> 
//<![CDATA[ 

var once_per_session=1 


function get_cookie(Name) { 
    var search = Name + "=" 
    var returnvalue = ""; 
    if (document.cookie.length > 0) { 
    offset = document.cookie.indexOf(search) 
    if (offset != -1) { // if cookie exists 
     offset += search.length 
     // set index of beginning of value 
     end = document.cookie.indexOf(";", offset); 
     // set index of end of cookie value 
     if (end == -1) 
     end = document.cookie.length; 
     returnvalue=unescape(document.cookie.substring(offset, end)) 
     } 
    } 
    return returnvalue; 
} 

function alertornot(){ 
if (get_cookie('alerted')==''){ 
loadalert() 
document.cookie="alerted=yes" 
} 
} 

function loadalert(){ 
document.getElementById("popupp").style.visibility = visible; 

if (once_per_session==0) 
loadalert() 
else 
alertornot() 

//]]> 
</script> 

<div class="popupp" style="visibility:hidden;">hi</div> 

你认为你能不能帮我找出什么是错呢?

编辑

我知道了!那就是:

<script type='text/javascript'>//<![CDATA[ 
window.onload=function(){ 
(function() { 
    var visited = localStorage.getItem('visited'); 
    if (!visited) { 
     document.getElementById("popupp").style.visibility = "visible"; 
     localStorage.setItem('visited', true); 
    } 
})(); 
}//]]> 

</script> 


</head> 
<body> 
    <div id="popupp" style="visibility:hidden;">hi</div> 

</body> 
+0

这真的是你使用的代码吗?因为你至少得到一个语法错误,因为你错过了'loadalert'函数的右括号 – GNi33

+0

@ GNi33你能告诉我怎么解决它吗? – meowsome

+0

你是否得到语法错误?在document.getElementById(“popupp”)后面加上'}'style.visibility = visible;' – GNi33

回答

3

你可以使用localStorage的相反,只有当用户将其清除出去,他将再次得到弹出(同样使用cookie),但其多simplier:

(function() { 
    var visited = localStorage.getItem('visited'); 
    if (!visited) { 
     document.getElementById("popupp").style.visibility = "visible"; 
     localStorage.setItem('visited', true); 
    } 
})(); 

HTML:

<div id="popupp" style="visibility:hidden;">hi</div> 

这样你会得到很多较少的代码。希望这可以帮助。

+0

谢谢!我现在将测试它 – meowsome

+0

它似乎没有工作...我使用它是这样的:

meowsome

+0

检查我的编辑,您在编辑之前使用过我的代码。 – taxicala

0

如果目标是只显示一次,您可以使用example on the MDN website作为开始。

if (document.cookie.replace(/(?:(?:^|.*;\s*)someCookieName\s*\=\s*([^;]*).*$)|^.*$/, "$1") !== "true") { 
    alert("Do something here!"); 
    document.cookie = "someCookieName=true; expires=Fri, 31 Dec 9999 23:59:59 GMT; path=/"; 
} 

http://jsfiddle.net/daCrosby/pqb5baa5/

编辑

这是显示你核实。请注意,我搬到造型的CSS,而不是内嵌在我的jsfiddle - 更好的方法,以在杭得到

if (document.cookie.replace(/(?:(?:^|.*;\s*)someCookieName\s*\=\s*([^;]*).*$)|^.*$/, "$1") !== "true") { 
    document.getElementById("popupp").style.visibility = "visbile"; 
    document.cookie = "someCookieName=true; expires=Fri, 31 Dec 9999 23:59:59 GMT; path=/"; 
} 

http://jsfiddle.net/daCrosby/pqb5baa5/2/

+0

我可以让它显示一个div而不是发出警报吗? – meowsome

+0

@ meowsom3是的!只需更改'alert('在这里做点什么!');'像这样:'document.getElementById('popupp').style.visibilty ='visible';' – alexandreferris

+0

@ meowsom3 yes,you can。看我的编辑。 – DACrosby

0

试试这个:在HTMLclass="popupp"变化id="popupp"

,并在javascript:document.getElementById("popupp").style.visibility = visible;变化document.getElementById("popupp").style.visibility = "visible";

Demo