文本冒险游戏按钮点击切换文本无响应问题排查与修复求助
文本冒险游戏按钮点击切换文本无响应问题排查与修复求助
嘿,我帮你梳理下这段代码里的问题,改完这几处应该就能正常运行啦:
1. 变量声明顺序搞反了
你在storyLine[0]里用到了userInput.value,但userInput是后面才声明的,这时候浏览器根本找不到这个变量,直接就会报错。得先获取DOM元素,再构建剧情文本:
function functionfirstAnswer() { // 先拿到页面上的输入框和显示区域 let userInput = document.querySelector("#userInput01"); let message = document.getElementById("messageFirst"); // 注意这里要去掉# // 再定义剧情数组 let storyLine = new Array(); let nextStoryLine = 0; storyLine[0] = "Hallo, " + userInput.value + " weist du noch was passiert ist?"; storyLine[1] = "text one."; storyLine[2] = "text two."; storyLine[3] = ""; storyLine[4] = ""; storyLine[5] = ""; storyLine[6] = ""; storyLine[7] = ""; storyLine[8] = ""; storyLine[9] = ""; // 要取数组里的对应文本,不是直接写索引数字 message.innerHTML = storyLine[++nextStoryLine]; }
2. getElementById的语法错误
getElementById只需要传元素的ID字符串就行,不需要加#,你之前写的document.getElementById("#messageFirst")是错的,改成document.getElementById("messageFirst")才能正确找到元素。
3. 剧情递进的变量会被重置
现在nextStoryLine是函数内部的变量,每次点击按钮调用函数时,它都会被重新设为0,这样每次点击都只会显示storyLine[1],没法往下推进剧情。如果想让剧情连续递进,得把nextStoryLine放到函数外面,保留住上次的数值:
// 把变量放到函数外面,这样每次调用函数都能记住上次的剧情位置 let nextStoryLine = 0; let storyLine = []; // 用[]创建数组更简洁 // 可以单独写个初始化剧情的函数,页面加载时调用 function initStory() { storyLine[0] = "初始引导文本"; storyLine[1] = "text one."; storyLine[2] = "text two."; // ...其他剧情内容 } function functionfirstAnswer() { let userInput = document.querySelector("#userInput01"); let message = document.getElementById("messageFirst"); // 第一次触发时先显示带用户名的初始剧情 if(nextStoryLine === 0){ message.innerHTML = "Hallo, " + userInput.value + " weist du noch was passiert ist?"; nextStoryLine++; } else { // 避免超出数组范围,防止报错 if(nextStoryLine < storyLine.length){ message.innerHTML = storyLine[nextStoryLine]; nextStoryLine++; } else { message.innerHTML = "剧情结束啦!"; } } }
4. 字符串转义问题
你代码里的"是HTML转义字符,在JavaScript里应该直接用双引号",否则会导致语法错误,编辑器也会标红提示。
5. 别忘了绑定按钮点击事件
最后要确保HTML里有触发这个函数的按钮,比如:
<input type="text" id="userInput01" placeholder="输入你的名字"> <button onclick="functionfirstAnswer()">提交回答</button> <div id="messageFirst"></div>
如果没有绑定点击事件,函数根本不会被调用,自然什么反应都没有。
按照上面的步骤改完,你的文本冒险游戏应该就能正常切换剧情啦!
备注:内容来源于stack exchange,提问作者Luke Eckardt
相关产品推荐
相关产品推荐

