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

JS评论区动态元素问题:提交新内容无法生成对应元素

评论区提交新内容不更新的问题解决

问题现象

制作了包含CSS和JS的评论区页面,输入不同的name和message后点击Submit按钮,期望生成对应内容的新元素。但实际测试时,第一次输入"harry"和"this is the message"提交后,重置输入新内容再提交,新生成的元素仍然显示第一次的信息。

问题原因

你的JS代码中,name和message变量是在页面加载时就获取了输入框的初始值,之后点击按钮的事件处理函数里没有重新获取输入框的最新值,所以每次提交都用的是最初存储的旧值。

修正后的代码

HTML部分(无需修改)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title></title>
</head>
<body>
    <div class="msg">
        <div class="items"></div>
        <div class="input">
                <input type="text" class="name" placeholder="Name">
                <input type="text" class="message" placeholder="Message">
                <button id="button">Submit</button>
                <button type="reset">Reset</button>
        </div>
    </div>
</body>
</html>

CSS部分(无需修改)

html, body{
            padding: 0;
            margin: 0;
        }
        .msg{
            padding: 2em;
            margin: 2em;
            border-radius: 2vh;
            height: 70vh;
            display: flex;
            align-items: center;
            justify-content: left;
            flex-direction: column;
            background-color: #1e90ff;
        }
        .items{
            height: 65vh;
            overflow: scroll;
            color: white;
            width: 100%;
            overflow-x: hidden;
            margin: 10px;
        }
        input{
            padding: 10px;
            border: none;
            border-radius: 8px;
            outline: none;
            font-size: 1em;
        }
        #button{
            padding: 10px 20px;
            border-radius: 8px;
            border: none;
            font-size: 1em;
        }
        .button{
            padding: 10px 20px;
            border-radius: 8px;
            border: none;
            font-size: 1em;
        }
        .message-item{
            background-color: black;
            padding: 1em;
            border-radius: 8px;
            margin: 3px;
        }

JS部分(关键修改)

let btn = document.getElementById('button');
let div = document.querySelector('.items')

btn.addEventListener('click', ()=>{
    // 每次点击按钮时,重新获取输入框的最新值
    let name = document.querySelector('.name').value;
    let message = document.querySelector('.message').value;
    
    let item = document.createElement('div')
    let inner = `
            <h3>${name}</h3>
            <p>${message}</p>
            `
    item.className = "message-item"        
    item.innerHTML = inner        
    div.append(item)
});

修改说明

把name和message变量的获取逻辑移到按钮点击事件的处理函数内部,这样每次点击Submit按钮时,都会重新读取输入框的当前值,就能正确生成对应新内容的评论元素了。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 01:22:47