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

使用JavaScript动态添加元素时关联CSS样式不生效问题咨询

问题根因
  • DOM插入逻辑错误:appendChild()方法的返回值是被插入的子元素,而非父元素。现有代码执行时,会先将子元素(如newdivforname)插入到带.card类的newdiv中,随后直接将子元素挂载到datastore容器下,最终带.card类的newdiv未被插入到页面DOM树,仅存在于内存中,对应样式无法生效。
  • CSS属性写法不规范:font是简写属性,仅配置字重900不符合语法规则,浏览器会直接忽略整条font声明,就算后续DOM逻辑修复,字重效果也不会生效。
修复方案

1. 修正JavaScript插入逻辑

先把所有子元素插入到带.card类的newdiv中,最后再将整个newdiv插入到datastore容器即可:

function render(recievedData) {
    let a = 0;
    const info = JSON.parse(recievedData);
    console.log(info);
    if (info[a] === null)
        return;
    else {
        info.forEach(element => {
            console.log(element);
            var newdiv = document.createElement('div');
            newdiv.className = 'card';

            var newdivforname = document.createElement('div');
            var newdivformood = document.createElement('div');
            var newdivforlatitude = document.createElement('div');
            var newdivforlongitude = document.createElement('div');

            newdivforname.innerText = element.name;
            newdivformood.innerText = element.mood;
            newdivforlatitude.innerText = element.latitude;
            newdivforlongitude.innerText = element.longitude;

            // 先将所有子元素插入带card类的父容器
            newdiv.appendChild(newdivforname);
            newdiv.appendChild(newdivformood);
            newdiv.appendChild(newdivforlatitude);
            newdiv.appendChild(newdivforlongitude);
            // 最后将父容器整体插入页面
            document.getElementById("datastore").appendChild(newdiv);
        });
    }
}

2. 修正CSS写法

将不规范的font简写属性替换为单独的font-weight属性即可:

.card{
    font-weight: 900;
    color: red;
    background: lightgreen;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 07:36:04