我正在學習Javascript,當我測試某些功能時,發現一些問題。這裏是我的代碼:意外的Javascript onkeydown事件和document.write
<script>
function onCreate() {
var body = document.getElementsByTagName('body')[0];
body.focus();
body.onkeydown = function(e) {
if (e.keyCode == 32) {
alert(1);
sayHey();
}
}
}
function sayHey() {
document.write("Hey ");
document.write("May");
}, 30);
</script>
</head>
<body onload="onCreate()">
</body>
正如你可以試試,onKeyDown事件完美的作品時,我不包括的sayHello()函數,它使用的setInterval的。 當包含sayHello()時,當我點擊空格鍵時,就會按照預期創建「Hey May」。但是,當我再次單擊空格鍵時,沒有提示消息,也沒有提出新的「嗨,May」。看來onkeydown()函數不再有效。爲什麼會這樣?
另外,當我將document.write(brabrabra)
更改爲下面的一個時,它工作。
var newParagraph = document.createElement('p');
var text = "Hey May";
var textNode = document.createTextNode(text);
newParagraph.appendChild(textNode);
body.appendChild(newParagraph);
爲什麼會這樣?有人可以向我解釋嗎?非常感謝。
非常感謝 – CHANist
只要記住一個問題......如果'document.write()'清除當前文檔並打開一個新的空白文檔。爲什麼連續的'document.write()'工作...爲什麼不document.write(「May」)覆蓋document.write(「嘿」)? – CHANist
@CHANist - 因爲一旦你打開了一個新文檔,它仍然是開放的,所以你可以寫更多。事實上,文檔在最初完成分析時會關閉,這會導致您的問題。 – jfriend00