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

点击自定义按钮后Flex项目消失问题求助

解决点击分类按钮后右侧Flex Item消失的问题

问题根源

你点击分类按钮的事件处理代码中,错误地将右侧Flex容器(#box-2)移动到了新建的<h1>元素内部:

item.appendChild(flex2)

DOM元素在页面中只能存在一个位置,执行这行代码后,#box-2会从原本的Flex容器中被移除,导致右侧区域直接消失。你的需求是把<h1>添加到#box-2里,而不是反过来。

修复方案

将代码逻辑反转,把新建的<h1>元素追加到#box-2中。同时建议使用textContent替代innerHTML,避免不必要的XSS风险:

修正后的JavaScript代码

//关闭分类命名弹窗的按钮
const closeButton = document.querySelector('#close-button')
//左侧flex item
const newFileBox = document.querySelector('#box-1')
//打开新建分类命名弹窗
const folderButton = document.querySelector('#new-folder-button')
//创建分类的表单
const createFolder = document.querySelector('#fileForm')
//展示分类按钮的列表
const fileList = document.querySelector('#file-list')
const input = document.querySelector('#file-name')
//右侧flex item
const flex2 = document.querySelector('#box-2')
let tab = '';

closeButton.addEventListener('click', () => {
    newFileBox.style.display = 'none';
})

folderButton.addEventListener('click', () => {
    newFileBox.style.display = 'block';
})

createFolder.onsubmit = (event) =>{
    event.preventDefault();
    tab = createFile(input.value)
    tab.addEventListener('click', () => {
        // 可选:每次点击前清空右侧容器内容,避免重复添加
        flex2.innerHTML = '';
        const item = document.createElement('h1')
        item.textContent = 'Games'
        flex2.appendChild(item)
    })
}

function createFile(text){
    const file = document.createElement('button')
    file.innerHTML = text;
    fileList.appendChild(file);
    return file;
}

额外说明

如果需要每次切换分类时清空右侧的旧内容,保留flex2.innerHTML = '';这行代码;如果希望保留历史内容,则可以删除该行。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 08:57:47