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

点击按钮时根据用户输入向HTML已定义div中追加div的代码问题排查

问题排查与解决方法

我一眼就发现问题所在啦——你的按钮是submit类型,点击后表单会默认提交并刷新页面,这就导致你刚创建的div还没显示就被页面刷新冲掉了!另外你的HTML还有标签闭合错误,也可能影响DOM结构。下面一步步给你解决:

核心问题1:表单提交导致页面刷新

当你点击<button type="submit">时,浏览器会自动触发表单提交并刷新页面,所以你的JavaScript代码其实已经执行了,但页面一刷新,新添加的div就直接消失了,看起来像是没创建成功。解决这个有两种简单办法:

方法A:阻止表单默认提交行为

修改你的myfunc函数,加上event.preventDefault()来拦截默认的表单提交动作:

var split_button = document.querySelector(".btn");
split_button.addEventListener("click", myfunc);
function myfunc(event) { // 接收事件参数
    event.preventDefault(); // 阻止表单提交刷新页面
    // 用const/let声明变量,避免全局变量污染
    const number = document.querySelector("#number").value;
    const split = document.querySelector("#split").value;
    // 加个判断,避免除数为0报错
    if (split <= 0) {
        alert("Split number must be greater than 0!");
        return;
    }
    const totalDivs = Math.floor(number / split);
    const displayDiv = document.getElementById("disp");
    // 可选:清空之前的div,避免多次点击累加
    displayDiv.innerHTML = "";
    for (let i = 0; i < totalDivs; i++) {
        const tag = document.createElement("div");
        // 给div加样式,不然空div看不到效果
        tag.style.width = "60px";
        tag.style.height = "60px";
        tag.style.backgroundColor = "#e2e2e2";
        tag.style.margin = "8px";
        tag.style.display = "inline-block";
        tag.textContent = `Div ${i+1}`; // 加内容方便区分
        displayDiv.appendChild(tag);
    }
}

方法B:修改按钮类型为button

直接修改HTML里的按钮,把type="submit"改成type="button",这样点击按钮就不会触发表单提交了:

<button type="button" class="btn btn-primary my-2">Split</button>

核心问题2:HTML标签闭合错误

你的HTML末尾多了一对</form>和</div>,这会导致DOM结构异常,修复后的完整HTML应该是这样:

<div class="container my-5">
    <form>
        <div class="form-group p-2">
            <label for="number" class="num">Enter a Number</label>
            <input type="number" class="form-control" id="number" />
        </div>
        <div class="form-group p-2">
            <label for="split" class="num">Enter number of times you want to split</label>
            <input type="number" class="form-control" id="split" />
        </div>
        <button type="button" class="btn btn-primary my-2">Split</button>
    </form>
    <div id="disp"></div>
</div>

额外小提示

  • 给新创建的div加样式很重要:默认空div没有宽高和背景,你可能会误以为没创建成功,加个样式就能直观看到效果。
  • 可以添加输入校验:比如判断输入的数字是否有效、split不能为0,避免出现意外报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.27 17:07:51