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

点击Start game按钮无alert弹窗问题求助(石头剪刀布UI项目)

石头剪刀布Start Game按钮点击无响应问题排查与修复

问题根源

你的JavaScript代码放在了<head>标签内,浏览器会优先解析<head>里的内容,此时<body>中的按钮元素还未被渲染到DOM中,所以document.querySelector('#startgame')会返回null,导致绑定点击事件的逻辑根本没有执行,自然点击按钮没反应。

修复方案

以下三种方法任选其一即可解决问题:

方法1:将JS脚本移到<body>末尾

把<script>标签放到</body>之前,确保DOM元素全部渲染完成后再加载执行JS:

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <title>Project Rock Paper Scissors</title>
    </head>
    <body>
        <div class="btn-group">
            <button id="startgame"> Start game </button>
            <button id="rock"> Rock </button>
            <button id="paper"> Paper </button>
            <button id="scissor"> Scissor </button>
        </div>    
        <!-- 移到body末尾 -->
        <script src="javascript.js"> </script>
    </body>
</html>

方法2:用DOMContentLoaded事件包裹代码

在JS中监听DOMContentLoaded事件,确保DOM加载完成后再执行元素获取和事件绑定:

document.addEventListener('DOMContentLoaded', () => {
    const startGame = document.querySelector('#startgame');
    if (startGame) {
        startGame.addEventListener('click', () => {
            alert("Choose Rock, Paper or Scissor");
        })
    }    

    const rock = document.querySelector('#rock');
    const paper = document.querySelector('#paper');
    const scissor = document.querySelector('#scissor'); 
});

方法3:给script标签添加defer属性

defer属性会让浏览器在解析完DOM后再执行脚本,同时不阻塞DOM解析:

<head>
    <meta charset="utf-8">
    <title>Project Rock Paper Scissors</title>
    <script src="javascript.js" defer> </script>
</head>

原始代码参考

HTML代码

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <title>Project Rock Paper Scissors</title>
        <script src = "javascript.js"> </script>
    </head>
    <body>
        <div class="btn-group">
            <button id="startgame"> Start game </button>
            <button id="rock"> Rock </button>
            <button id="paper"> Paper </button>
            <button id="scissor"> Scissor </button>
        </div>    
    </body>
</html>

JavaScript代码

const startGame = document.querySelector('#startgame');

if (startGame) {
    startGame.addEventListener('click', () => {
        alert("Choose Rock, Paper or Scissor");
    })
}    

const rock = document.querySelector('#rock');
const paper = document.querySelector('#paper');
const scissor = document.querySelector('#scissor'); 

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 18:36:24