在单击按钮(“播放”)之前,程序处理keydown但在单击绘制表格的按钮之后,此后不会处理keydown消息。 我希望这在IE或FIREFOX中工作。
<html>
<head>
<script type="text/javascript">
var matrix,xbody,ybody,dir,key;
function draw()
{
for(var i=0;i<xbody.length;i++)
{
matrix[xbody[i]*50+ybody[i]].bgColor="black";
}
alert("draw");
}
function init()
{
document.write("<table id='mine' align='center' height='500px' cellSpacing='0' cellPadding='0' width='500px' border='4' >");
for(var i=0;i<50;i++)
{
document.write("<tr>");
for( var j=0;j<50;j++)
document.write("<td></td>");
document.write("</tr>");
}
document.write("</table></div>");
matrix=mine.getElementsByTagName("td");
xbody=new Array();
ybody=new Array();
xbody[0]=ybody[0]=0;
draw();
alert("pop");
}
function keypress(e)
{
alert("aiyoooo");
if((e.keyCode==38)|| ((e.which)&&(e.which==38)))
key=0;
else if((e.keyCode==40)|| ((e.which)&&(e.which==40)))
key=1;
else if((e.keyCode==37)|| ((e.which)&&(e.which==37)))
key=2;
else if((e.keyCode==39)|| ((e.which)&&(e.which==39)))
key=3;
}
</script>
</head>
<body onkeydown=keypress(event)>
<br/>
<input type="button" onClick="init()" value="play">
</body>
</html>
答案 0 :(得分:1)
您可能需要阅读这篇文章:http://java-programming.suite101.com/article.cfm/javascript_documentwrite_tutorial
document.write命令必须是 在装载期间进行 页。所以,如果它附加到任何 在页面之后执行的事件 加载,然后整个页面将 替换为的内容 document.write命令。
您可能希望改为使用document.write
而不是使用getElementById
,然后将HTML放在您希望文本所在元素的innerHTML
属性中。
可能需要添加新div
来保存新文字。
答案 1 :(得分:0)
由于答案相当长,只是=&gt; look here
简而言之,document.write不是正确的方法。 使用类似于document.createElement的smth,或者像jquery那样使用一个不错的javascript框架。
你可以
var html = "";
html += "<table id='mine' align='center' height='500px' cellSpacing='0' cellPadding='0' width='500px' border='4' >";
html += ...
$(html).appendTo("body");
希望这会有所帮助