javascript onkeydown处理问题

时间:2010-07-31 17:30:59

标签: javascript-events

在单击按钮(“播放”)之前,程序处理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>

2 个答案:

答案 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");

希望这会有所帮助