javascript onkeydown проблема с обработкой - PullRequest
0 голосов
/ 31 июля 2010

до нажатия кнопки («воспроизведение») программа обрабатывает нажатие клавиш, но после нажатия кнопки, которая рисует таблицу, сообщения о нажатиях клавиш не обрабатываются. Я хочу, чтобы это работало в 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 ]

1 голос
/ 31 июля 2010

Вы можете прочитать эту статью: http://java -programming.suite101.com / article.cfm / javascript_documentwrite_tutorial

Необходимо выполнить команду document.writeво время загрузки страницы.Таким образом, если он прикреплен к какому-либо событию, которое выполняется после загрузки страницы, то вся страница будет заменена содержимым команды document.write.

Вместо использования document.write,вместо этого вы можете захотеть использовать getElementById, а затем поместить свой HTML-код в свойство innerHTML того элемента, в котором вы хотите разместить текст.

Для этого может потребоваться добавить новый div для храненияновый текст.

0 голосов
/ 31 июля 2010

Поскольку ответ будет довольно длинным, просто => посмотрите здесь

в коротком document.write - это не правильный путь. используйте что-то другое, например document.createElement, или перейдите на хороший и простой фреймворк javascript, например jquery.

там вы могли бы просто

var html = "";
html += "<table id='mine' align='center' height='500px' cellSpacing='0' cellPadding='0' width='500px' border='4' >";
html += ...
$(html).appendTo("body");

надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...