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

代码简化为两个函数后JS输入功能失效,寻求排查方案

购物清单输入功能失效问题排查与修复

问题背景

未封装inputLength和createListElement函数时,购物清单的输入添加功能正常;将逻辑封装到这两个函数后,点击Enter按钮或按回车键添加条目功能完全失效,浏览器控制台无任何报错信息。

错误原因分析

代码存在两个核心问题:

  • 函数调用错误:inputLength是返回输入框内容长度的函数,但判断条件中直接写inputLength > 0,这里引用的是函数本身而非调用函数返回的数值。函数对象与数字0比较时会被转换为NaN,NaN > 0结果永远为false,导致条件无法成立,触发不了createListElement。
  • 事件参数未声明:keydown事件处理函数中直接使用event变量,但未将其作为参数传入。尽管部分浏览器支持全局event对象,但这不符合标准写法,可能导致事件对象无法正常获取。

修正后的代码

JavaScript 代码

var button = document.getElementById("enter");
var input = document.getElementById("userinput");
var ul = document.querySelector("ul");

function inputLength() {
    return input.value.length;
}

function createListElement() {
    var li = document.createElement("li");
    li.appendChild(document.createTextNode(input.value));
    ul.appendChild(li);
    input.value = "";
}

button.addEventListener("click", function () {
    // 调用inputLength函数获取长度值
    if (inputLength() > 0) {
        createListElement();
    }
})

input.addEventListener("keydown", function (event) {
    // 声明event参数,确保正常获取事件对象
    if (inputLength() > 0 && event.key === "Enter") {
        createListElement();
    }
})

HTML 代码(无需修改)

<!DOCTYPE html>
<html>
<head>
    <title>Javascript + DOM</title>
    <link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
    <h1>Shopping List</h1>
    <p id="first">Get it done today</p>
    <input id="userinput" type="text" placeholder="enter items">
    <button id="enter">Enter</button>
    <ul>
        <li class="bold red" random="23">Notebook</li>
        <li>Jello</li>
        <li>Spinach</li>
        <li>Rice</li>
        <li>Birthday Cake</li>
        <li>Candles</li>
    </ul>
    <script type="text/javascript" src="script.js"></script>
</body>
</html>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 21:43:21