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

点击保存按钮时,如何避免输入框为空时生成空<li>元素?

解决输入为空时生成空
  • 元素的问题
  • 点击“SAVE INPUT”按钮时遇到以下问题:输入框有内容时,能正常将输入值存入数组并生成

  • 元素(此功能已实现);但输入框为空时点击按钮,仍会生成空的
  • 元素。需要修改代码,让输入为空时停止输出。

    原代码:

    const inputBtn = document.getElementById("input-btn")
    const inputEl = document.getElementById("input-el") 
    const ulEl = document.getElementById("ul-el")
    let myLead = []
    
    inputBtn.addEventListener("click", function() {
            myLead.push(inputEl.value)
            renderLoad()
            inputEl.value = "" 
    
    });
    
    function renderLoad() {
        let listItems = "";
        for (let i = 0; i < myLead.length ; i++ ) {
            /* listItems += "<li><a href='#'' target='_blank'>" + myLead[i] + "</li>"; */
            listItems += `
            <li>
                <a href='#' target='_blank'>${myLead[i]}  
            </li>`;
            ulEl.innerHTML = listItems   // follow html rule 
        }
    }
    

    示例:

    情况1:输入有值(代码正常工作)

    输入: "www.google.com"

    输出:

  • www.google.com
  • 情况2:输入为空(代码异常)

    输入:

    输出:

    (每次点击都会生成空的"

  • "元素)


  • 修改方案:

    1. 添加输入有效性校验:先获取去除前后空白的输入值,仅当值不为空时,才存入数组并渲染列表;
    2. 优化DOM操作逻辑:将列表DOM更新移到循环外部,减少不必要的DOM操作次数。

    修改后的代码:

    const inputBtn = document.getElementById("input-btn")
    const inputEl = document.getElementById("input-el") 
    const ulEl = document.getElementById("ul-el")
    let myLead = []
    
    inputBtn.addEventListener("click", function() {
        // 去除输入值前后的空白字符
        const inputValue = inputEl.value.trim();
        // 仅当输入值有效时执行存入和渲染
        if (inputValue) {
            myLead.push(inputValue);
            renderLoad();
        }
        // 无论输入是否有效,都清空输入框
        inputEl.value = "";
    });
    
    function renderLoad() {
        let listItems = "";
        for (let i = 0; i < myLead.length ; i++ ) {
            listItems += `
            <li>
                <a href='#' target='_blank'>${myLead[i]}  
            </li>`;
        }
        // 循环结束后一次性更新DOM
        ulEl.innerHTML = listItems;
    }
    

    说明:

    • trim()可以过滤掉用户输入的纯空格内容,避免生成无意义的空列表项;
    • 条件判断if (inputValue)会在输入值为空字符串时直接跳过后续操作;
    • 将DOM更新移到循环外,能减少浏览器重绘次数,提升代码运行效率。

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

  • 相关产品推荐
    方舟 Agent Plan

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

    最近更新时间:2026.07.27 18:57:03