2011-09-23 63 views
-3

我試圖根據cookie是否設置在現有網頁上編寫一段文本。 Cookie部分工作正常,但document.write導致文本出現在新的空白頁面上。document.write in html/php doc寫入新頁面

<script type="text/javascript"> 
function getCookie(c_name) 
{ 
var i,x,y,ARRcookies=document.cookie.split(";"); 
for (i=0;i<ARRcookies.length;i++) 
{ 
x=ARRcookies[i].substr(0,ARRcookies[i].indexOf("=")); 
y=ARRcookies[i].substr(ARRcookies[i].indexOf("=")+1); 
x=x.replace(/^\s+|\s+$/g,""); 
if (x==c_name) 
{ 
return unescape(y); 
} 
} 
} 

function setCookie(c_name,value,exdays) 
{ 
var exdate=new Date(); 
exdate.setDate(exdate.getDate() + exdays); 
var c_value=escape(value) + ((exdays==null) ? "" : "; expires="+exdate.toUTCString()); 
document.cookie=c_name + "=" + c_value; 
} 

function checkCookie() 
{ 
var username=getCookie("username"); 
if (username!=null && username!="") 
{ 
alert("Welcome again " + username); 
} 
else 
{ 
username=prompt("Please enter your name:",""); 
document.write ("hello"); 
if (username!=null && username!="") 
{ 
setCookie("username",username,7); 

} 
} 
} 
</script> 


<body onload="checkCookie()"> 

</body> 

我想我需要使用z-index莫名其妙,但似乎無法讓它工作。如果有人能解釋我如何讓我的'document.write'行出現在頁面上已存在的東西的頂部,我將非常感激。所有這些都發生在joomla網站的一個頁面上,代碼位於其中一個模塊的php文件中。謝謝大家。

Rob。

+1

該行爲是預期的。請參閱:https://developer.mozilla.org/en/document.write#Notes解決方案:不要使用'document.write'。 –

回答

2

分配主體中的ID,如 '體',則使用下面的:

document.getElementById('body').innerHTML = 'Text that you want to assign'; 

W3學校具有良好example of it

1

我認爲你應該在你的標記中定義一個部分,在這裏應該添加消息。

<div id="wrapper"> 
<div id="message"></div> 
<div id="content"> 
... 
</div> 
</div> 

所以你可以加入你的留言到 「信息」 -div:

document.getElementById('message').innerHTML = 'Hello '+username; 
2

document.write()應該避免。

它幾乎沒有(可以說)有效的用例,所有這些用例都必須內嵌在script元素中並在頁面加載時執行。

當您在頁面加載之外使用它時,它將隱式地調用document.open()這將清除您的頁面。

你應該偏愛現代標準化的DOM方法。