2010-07-31 2 views
0

до нажатия кнопки («play»), программа обрабатывает keydown, но после нажатия кнопки, которая рисует таблицу, после этого сообщения с клавиатурой не обрабатываются. Я хочу, чтобы это работало в IE или FIREFOX ,Проблема с обработкой javascript onkeydown

<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

Что именно вы хотите работать? – Oded

ответ

0

Поскольку ответ был бы довольно долго просто =>look here

в короткий document.write просто не правильный путь. использовать smth иначе, как document.createElement или пойти для nice'n'easy javascript framework, как jquery.

там можно просто

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

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

1

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

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

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

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

+0

Это. Кроме того, используйте что-то вроде 'document.getElementById ('mine')' вместо того, чтобы просто использовать 'mine' напрямую (что должно работать только в режиме quirks). –

Смежные вопросы