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

求助:诗歌填空校验功能异常,求排查JavaScript代码问题

诗歌填空校验功能排查指南

嘿,我来帮你捋捋这个诗歌填空校验功能可能出问题的地方,都是我踩过的坑,你挨个排查下:

  • 元素获取环节出错:
    你用JS获取填空的<span>元素时,有没有写错选择器?比如有的span没加唯一id,或者getElementById里的id拼写和HTML里的不一致。另外注意,contenteditable元素的内容要用textContent或innerText获取,别用value(那是input/textarea专属的),比如正确写法是:

    const word1Input = document.getElementById('word1').textContent.trim();
    
  • 匹配逻辑没做容错处理:
    比如用户输入的单词大小写和正确答案不一致(比如正确词是wander,用户输了Wander),或者不小心带了前后空格,这时候校验就会失败。你可以把输入内容和正确答案统一转成小写,再去掉前后空白后对比:

    const correctWord1 = "wander";
    const userInput = document.getElementById('word1').textContent.trim().toLowerCase();
    if (userInput === correctWord1.toLowerCase()) {
      // 正确逻辑
    }
    
  • 校验触发时机不对:
    如果是点击按钮触发校验,检查下按钮的事件绑定是否生效——比如是不是用addEventListener时写错了事件名(把click写成clik),或者HTML里的onclick绑定的函数名拼写错误。如果想实时校验,要给contenteditable元素监听input事件,而不是change事件(change对contenteditable元素不敏感)。

  • DOM加载顺序问题:
    要是你的JS代码写在<head>标签里,浏览器还没加载完HTML就执行JS,那肯定拿不到填空元素!解决办法要么把JS代码放在</body>标签的前面,要么用DOMContentLoaded事件包裹你的代码:

    document.addEventListener('DOMContentLoaded', function() {
      // 所有和DOM操作相关的校验代码都放这里
    });
    
  • contenteditable属性不规范:
    确保每个填空的<span>都明确写上contenteditable="true",有些浏览器对只写contenteditable的支持不太稳定。另外,部分浏览器会给contenteditable元素自动添加换行或多余空格,记得在获取内容时用trim()清理掉。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:59:29