计分制性格测试点击分值按钮无结果输出的技术排查求助
问题排查与修复方案
嘿,我来帮你搞定这个性格测试的bug!
首先,导致你点击200分按钮后没有预期结果的核心原因是check()函数里的比较运算符写错了——你用了=>,这是JavaScript箭头函数的语法,并不是“大于等于”的比较运算符。正确的大于等于运算符应该是>=,这个错误直接让条件判断完全失效,所以永远不会执行显示图片的代码。
接下来,我帮你梳理所有需要修复的点:
1. 修复check()函数的核心运算符错误
把错误的=>改成正确的>=,条件就能正常判断了:
function check() { if(poeng >= 200) { // 这里把=>替换为>= document.write('<img style="position: relative; top: 500px; left: 200px;" src="bilder/cat2.jpg">'); } }
2. 修复answerFive()里的语法冗余与错误
在answerFive()函数的最后,你写了console.log(poeng) check(),这里有两个问题:
- 缺少分号,JavaScript会解析出错
- 不管前面的if/else分支有没有执行,都会额外调用一次
check(),可能导致逻辑重复执行
建议直接删掉这行多余的代码,修正后的函数如下:
function answerFive() { if(poeng == 200) { poeng = poeng + 0; console.log(poeng); check(); } else if (poeng == -300) { poeng = poeng - 300; console.log(poeng); check(); } else if (poeng == 500) { poeng = poeng - 1000; console.log(poeng); check(); } else if (poeng == 600) { poeng = poeng + 0; console.log(poeng); check(); } // 移除下面这行多余的代码 // console.log(poeng) check() }
3. 关于document.write的体验优化建议
另外提个小细节:页面加载完成后使用document.write会清空整个页面,用户体验不太友好。如果可以的话,建议提前在HTML里准备一个结果容器,比如:
<div id="result-container"></div>
然后通过修改容器内容来展示结果,替换check()函数的逻辑:
function check() { if(poeng >= 200) { const resultContainer = document.getElementById('result-container'); resultContainer.innerHTML = '<img style="position: relative; top: 500px; left: 200px;" src="bilder/cat2.jpg">'; } }
现在你修复第一个核心问题后,点击200分的按钮应该就能看到预期的图片了!
内容的提问来源于stack exchange,提问作者carolinecarrot
相关产品推荐
相关产品推荐

