You need to enable JavaScript to run this app. 原生JS动态注册注销事件时booking.html报addEvent读取错误
优惠活动
大模型
产品
解决方案
定价
更多

原生JS动态注册注销事件时booking.html报addEvent读取错误

报错根本原因
  • 你的start函数匹配到booking.html路径时,无参数手动调用了addEvent():
    } else if (path.endsWith("booking.html")) {
      addEvent();
      getSeat();
    }
    
  • addEvent是作为座位元素的点击事件回调设计的,内部依赖浏览器自动传入的事件对象event,通过event.target获取被点击的座位DOM元素。
  • 手动调用时没有传入任何参数,event的值为undefined,访问event.target时就会抛出Cannot read property 'target' of undefined错误。

修复方案

  • 删除路径判断里多余的addEvent()调用:addEvent只需要在后续的座位元素点击事件绑定时使用,不需要手动提前执行。
  • 你现在直接调用的getSeat()逻辑也有问题:这个函数是处理订票提交逻辑的,应该绑定到订票按钮的点击事件上,而不是页面加载时直接执行,否则打开页面就会弹出“请先选择座位”的提示。
  • 补充其他潜在问题的修复:
    • document.getElementsByClassName返回的是类数组对象,不是单个DOM元素,直接绑定事件会报错,需要取下标为0的元素,比如document.getElementsByClassName('reset')[0].addEventListener(...)
    • sessionStorage不存在bookingData时,JSON.parse会返回null,后续遍历data.length会报错,需要加空值兜底:var data = JSON.parse(sessionStorage.getItem('bookingData')) || []
    • 路径判断里单独写browserDetection;是无意义语句,后续给#specific-h3设置内容时直接使用该变量即可,不需要单独调用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.03 01:54:04