2011-11-29 31 views
2

真的很奇怪的事情正在发生,它在我document.write()以外window.onload = function(){}但是它不起作用,当我从里面调用它。请注意,表格已创建(我可以看出,因为我看到源代码)。为什么我的表格在写入'onload'时不显示?

<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
<title>title</title> 
<style type="text/css"> 
#chessboard{margin:0;padding:0;border:2px solid #000} 
#chessboard td{margin:0;padding:0;height:44px;width:42px;border:1px solid #000;background-repeat:no-repeat} 
#chessboard td.ws{background-color:#ddd} 
#chessboard td.bs{background-color:#999} 
#chessboard td.bp{background-image:url('./pieces/bp.png')} 
#chessboard td.br{background-image:url('./pieces/br.png')} 
#chessboard td.bn{background-image:url('./pieces/bn.png')} 
#chessboard td.bb{background-image:url('./pieces/bb.png')} 
#chessboard td.bq{background-image:url('./pieces/bq.png')} 
#chessboard td.bk{background-image:url('./pieces/bk.png')} 
#chessboard td.wp{background-image:url('./pieces/wp.png')} 
#chessboard td.wr{background-image:url('./pieces/wr.png')} 
#chessboard td.wn{background-image:url('./pieces/wn.png')} 
#chessboard td.wb{background-image:url('./pieces/wb.png')} 
#chessboard td.wq{background-image:url('./pieces/wq.png')} 
#chessboard td.wk{background-image:url('./pieces/wk.png')} 

</style> 
<script type="text/javascript"> 
var map="",i,ii,wsbs=true; 
var abc=["a","b","c","d","e","f","g","h"]; 

map+="<div align=\"center\"><table id=\"chessboard\" cellpadding=\"0\" cellspacing=\"0\"><tbody>"; 
for(i=8;i>0;i--){ 
map+="<tr>"; 
for(ii=0;ii<8;ii++){ 
map+="<td id=\""+abc[ii]+""+i+"\" class=\""; 
if(wsbs==true)map+="ws";else map+="bs"; 
map+="\">&nbsp;</td>"; 
if(ii!=7)wsbs=!wsbs; 
} 
map+="</tr>"; 
} 
map+="</tbody></table></div>"; 

//document.write(map); works here 

window.onload = function(){ 
document.write(map); 
} 

</script> 
</head> 
<body> 
</body> 
</html> 

回答

4

当你调用document.write()在页面加载后(通过window.onload()),您可以有效地抹杀页面,因为它已经呈现。相反,您应该将页面上某个现有元素的innerHTML设置为map的内容。由于您有一个空的<body>,因此写入机构的innerHTML将是安全的。否则,我会建议在<body>内部创建一个占位符<div>,并修改它的innerHTML

window.onload = function(){ 
    document.body.innerHTML = map; 
} 
+0

为什么你在括号内附上'map'? – ajax333221

+0

@ ogps92这是一个复制/粘贴错误,已经更正。 –

1

你正在写你的表<head>,所以你的浏览器不会解释它。你需要在身体中有这样的:

<script> 
document.write(map); 
</script> 
相关问题