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

为何两段修改BODY背景色的JavaScript代码效果不同?

问题分析:为什么两段修改body背景色的代码效果不同?

第一段代码的问题

let x = document.getElementsByTagName("BODY")[0].style.backgroundColor

function change() { x = "red"; }

这里的x存储的是body元素当前backgroundColor的属性值(初始状态下这个值是空字符串),它只是一个普通的字符串变量,和DOM元素本身没有任何关联。当你在change函数里给x赋值"red"时,只是修改了这个变量的内容,根本没触碰到DOM元素的样式属性,自然不会改变页面背景色。

第二段代码的逻辑

let x = document.getElementsByTagName("BODY")[0]

function change() { x.style.backgroundColor = "red"; }

这里的x存储的是body元素的DOM对象引用,它直接指向页面中的body元素。当你在change函数里通过x.style.backgroundColor = "red"操作时,是直接修改了这个DOM对象的样式属性,浏览器会根据这个修改更新页面渲染,所以背景色会变成红色。

本质区别就是:第一段拿了属性的值存起来修改,第二段拿了元素本身的引用去修改属性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 10:07:02