Web实现猜数字游戏:JavaScript DOM基础与实例教程 猜数字游戏是一个简单而经典的游戏,玩家需要猜测由系统随机生成的一个数字。在本教程中,我们将学习如何使用JavaScript和DOM来实现这个网页版的猜数字游戏,并介绍相关的JavaScript DOM基础知识。
JavaScript DOM基础 DOM(Document Object Model)是HTML文档的编程接口,它允许我们通过JavaScript访问和操作网页的元素。在JavaScript中,我们可以使用DOM API来选取元素、更改内容、绑定事件等。
体验地址
http://8.210.131.139/GuessNumber.html
实例:猜数字游戏 创建HTML结构 首先,我们需要创建一个包含游戏输入区域、结果显示和再玩一次按钮的HTML结构。
1 2 3 4 5 6 7 8 9 10 11 COPY <div class ="container" > <h1 > 猜数字游戏</h1 > <div class ="input-group" > <label for ="guess" > 请猜一个1~100的整数:</label > <input type ="text" id ="guess" /> <button id ="submit" > 提交</button > </div > <div class ="result" > </div > <div class ="message" > </div > <button id ="play-again" class ="play-again" style ="display: none" > 再玩一次</button > </div >
美化样式 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 COPY * { font-family : Arial, sans-serif; box-sizing : border-box; } .container { margin : 50px auto; max-width : 600px ; text-align : center; background-color : #d1d1d1 ; padding : 30px ; border-radius : 10px ; } h1 { font-size : 32px ; margin-bottom : 20px ; } .input-group { margin-bottom : 20px ; } label { display : block; margin-bottom : 5px ; } input [type="text" ] { font-size : 18px ; padding : 5px ; width : 200px ; border : 1px solid #ccc ; } button { font-size : 18px ; padding : 5px 10px ; background-color : #007bff ; color : #fff ; border : none; cursor : pointer; } button :hover { background-color : #0062cc ; } .result { font-size : 24px ; margin-bottom : 20px ; } .message { font-size : 18px ; margin-bottom : 20px ; } .play-again { font-size : 18px ; padding : 5px 10px ; background-color : #007bff ; color : #fff ; border : none; cursor : pointer; margin : 0 auto; } .play-again :hover { background-color : #0062cc ; }
编写JavaScript逻辑 初始化游戏 在JavaScript中,我们首先定义一个变量来存储随机生成的答案。
1 COPY var answer = Math .floor (Math .random () * 100 ) + 1 ;
获取页面元素 使用document.getElementById
和document.querySelector
来获取页面上的元素。
1 2 3 4 5 COPY var input = document .getElementById ("guess" );var submitBtn = document .getElementById ("submit" );var result = document .querySelector (".result" );var message = document .querySelector (".message" );var playAgainBtn = document .getElementById ("play-again" );
处理提交事件 为提交按钮绑定点击事件,获取用户输入的数字,并与答案比较。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 COPY submitBtn.addEventListener ("click" , function ( ) { var guess = parseInt (input.value ); if (isNaN (guess) || guess < 1 || guess > 100 ) { result.textContent = "" ; message.textContent = "请输入1~100之间的整数!" ; } else { if (guess === answer) { result.textContent = "恭喜你,猜对了!" ; message.textContent = "" ; playAgainBtn.style .display = "block" ; submitBtn.disabled = true ; } else { result.textContent = "" ; if (guess < answer) { message.textContent = "太小了,请继续猜!" ; } else { message.textContent = "太大了,请继续猜!" ; } } } });
处理再玩一次事件 为再玩一次按钮绑定点击事件,重置游戏状态并允许用户重新开始游戏。
1 2 3 4 5 6 7 8 COPY playAgainBtn.addEventListener ("click" , function ( ) { answer = Math .floor (Math .random () * 100 ) + 1 ; input.value = "" ; result.textContent = "" ; message.textContent = "" ; playAgainBtn.style .display = "none" ; submitBtn.disabled = false ; });
全部代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 COPY <!DOCTYPE html > <html lang ="en" > <head > <meta charset ="UTF-8" /> <meta http-equiv ="X-UA-Compatible" content ="IE=edge" /> <meta name ="viewport" content ="width=device-width, initial-scale=1.0" /> <title > 洛可可白😁猜数字</title > <style > * { font-family : Arial, sans-serif; box-sizing : border-box; } .container { margin : 50px auto; max-width : 600px ; text-align : center; background-color : #d1d1d1 ; padding : 30px ; border-radius : 10px ; } h1 { font-size : 32px ; margin-bottom : 20px ; } .input-group { margin-bottom : 20px ; } label { display : block; margin-bottom : 5px ; } input [type="text" ] { font-size : 18px ; padding : 5px ; width : 200px ; border : 1px solid #ccc ; } button { font-size : 18px ; padding : 5px 10px ; background-color : #007bff ; color : #fff ; border : none; cursor : pointer; } button :hover { background-color : #0062cc ; } .result { font-size : 24px ; margin-bottom : 20px ; } .message { font-size : 18px ; margin-bottom : 20px ; } .play-again { font-size : 18px ; padding : 5px 10px ; background-color : #007bff ; color : #fff ; border : none; cursor : pointer; margin : 0 auto; } .play-again :hover { background-color : #0062cc ; } </style > </head > <body > <div class ="container" > <h1 > 猜数字游戏</h1 > <div class ="input-group" > <label for ="guess" > 请猜一个1~100的整数:</label > <input type ="text" id ="guess" /> <button id ="submit" > 提交</button > </div > <div class ="result" > </div > <div class ="message" > </div > <button id ="play-again" class ="play-again" style ="display: none" > 再玩一次 </button > </div > <script > var answer = Math .floor (Math .random () * 100 ) + 1 ; var input = document .getElementById ("guess" ); var submitBtn = document .getElementById ("submit" ); var result = document .querySelector (".result" ); var message = document .querySelector (".message" ); var playAgainBtn = document .getElementById ("play-again" ); submitBtn.addEventListener ("click" , function ( ) { var guess = parseInt (input.value ); if (isNaN (guess) || guess < 1 || guess > 100 ) { result.textContent = "" ; message.textContent = "请输入1~100之间的整数!" ; return ; } if (guess === answer) { result.textContent = "恭喜你,猜对了!" ; message.textContent = "" ; playAgainBtn.style .display = "block" ; submitBtn.disabled = true ; } else if (guess < answer) { result.textContent = "" ; message.textContent = "太小了,请继续猜!" ; } else { result.textContent = "" ; message.textContent = "太大了,请继续猜!" ; } }); playAgainBtn.addEventListener ("click" , function ( ) { answer = Math .floor (Math .random () * 100 ) + 1 ; input.value = "" ; result.textContent = "" ; message.textContent = "" ; playAgainBtn.style .display = "none" ; submitBtn.disabled = false ; }); </script > </body > </html >
结语 通过上述步骤,我们实现了一个简单的猜数字游戏。这个实例展示了如何使用JavaScript DOM API来操作HTML元素,并响应用户事件。通过这个项目,你可以更好地理解DOM操作的基本概念和方法,以及如何在实际项目中应用它们。猜数字游戏是一个入门级的编程项目,适合初学者练习和提升编程技能。