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

JS报错addEventListener is not a function:MySQL下拉选值自动填充输入框问题排查

报错原因与修复方案

核心报错原因

你代码里的逻辑错误导致你尝试给字符串调用addEventListener方法,而该方法只有DOM元素对象才具备,具体错误点如下:

  • 第一行const spt = document.querySelector('.sku')+"";逻辑完全错误:document.querySelector('.sku')获取到的是下拉框的DOM元素对象,你强行拼接空字符串将其转为了[object HTMLSelectElement]格式的无意义字符串,后续拆分得到的select是字符串片段,自然不存在addEventListener方法。
  • 拆分|的逻辑位置错误:描述和售价拼接在每个option的value属性中,需要在用户选中下拉选项触发change事件时,读取当前选中的value再拆分,不能在页面刚加载时就执行拆分操作。

修正后的JavaScript代码

<script>
// 获取下拉框DOM对象
const select = document.querySelector('.sku');
// 获取两个输入框DOM对象
const result = document.querySelector('.desc');
const result1 = document.querySelector('.desc1');

// 绑定下拉框change触发事件
select.addEventListener('change', (event) => {
  // 读取当前选中的value值
  const currentVal = event.target.value;
  // 拆分得到描述和售价
  const valArr = currentVal.split('|');
  // 赋值到输入框,无选中值时默认清空
  result.value = valArr[0] ?? '';
  result1.value = valArr[1] ?? '';
});
</script>

可选优化建议

你现有的PHP输出代码存在HTML注入风险,如果数据库中存储的内容包含单引号,会破坏HTML结构,建议修改为转义输出:

<?php
$conn=mysqli_connect('localhost','root','','sku_db'); 
$query = "SELECT * FROM cpu";
$result = $conn->query($query);
while($row = mysqli_fetch_assoc($result)){
    $optionVal = htmlspecialchars($row['Description'].'|'.$row['Sell_Price']);
    $optionText = htmlspecialchars($row['SKU']);
    echo "<option value=\"{$optionVal}\">{$optionText}</option>";
}
?>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 15:54:03