You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

空格键触发keydown事件显示随机单词功能失效求助

问题排查:空格键触发随机单词功能失效

我需要给keydown事件监听器设置空格键触发逻辑,按下空格键时显示数组中的随机单词,但if条件语句未生效。按下空格键时display.innerHTML无任何反应,移除if语句后,功能会对所有按键生效,而非仅限定空格键。

原代码

HTML部分

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <script src="script.js"></script>
  <title>Type Game</title>
</head>
<body>
  <header>
    <h1>Type A Word Challenge!</h1>
  </header>
  <main>
    <div id="wordDisplay"></div>
    <br>
    <label>Type Word Here</label>
    <input type="text" id="typedWord">
    <h3>Press Spacebar to Begin
  </main>
</body>
</html>

JavaScript部分

window.addEventListener('keydown', randomD)

function randomD(event) {
  const wordList = ['Carvedilol', 'Histrelin', 'Kadcyla', 'Mavyret', 'Paracetamol',     
  'Raloxifene', 'Saxagliptin'];
  const random = Math.floor(Math.random() * wordList.length);
  const ranWord = wordList[random];
  const display = document.querySelector("#wordDisplay");
  if (keyCode === 32) {display.innerHTML = ranWord}
}

问题原因及修复方案

1. 核心问题:未正确引用事件对象的keyCode

你的代码中直接使用了keyCode变量,但这个变量并未定义,按键编码需要从传入的event对象中获取,即event.keyCode。

2. 额外优化:阻止空格键默认行为

按下空格键会触发页面滚动的默认行为,添加event.preventDefault()可以避免这个干扰。

3. HTML标签修复

原HTML中的<h3>标签未闭合,可能导致页面渲染异常,需要补充闭合标签。

修改后的代码

JavaScript部分

window.addEventListener('keydown', randomD)

function randomD(event) {
  const wordList = ['Carvedilol', 'Histrelin', 'Kadcyla', 'Mavyret', 'Paracetamol', 'Raloxifene', 'Saxagliptin'];
  const random = Math.floor(Math.random() * wordList.length);
  const ranWord = wordList[random];
  const display = document.querySelector("#wordDisplay");
  
  if (event.keyCode === 32) {
    event.preventDefault();
    display.innerHTML = ranWord;
  }
}

HTML修正部分

将未闭合的<h3>标签改为:

<h3>Press Spacebar to Begin</h3>

内容的提问来源于stack exchange,提问作者robH

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 10:10:03