2015-06-17 65 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