输入值无法更新元素:Box背景色与文本修改功能失效求助
问题分析与修复
问题根源
你代码里的typeColor和typeName变量是在页面加载时就获取了输入框的初始值(此时输入框为空,所以这两个变量是空字符串)。当点击按钮触发函数时,你用的还是这个初始空值,导致:
- 背景色设置为空,浏览器不会改变原有的灰色
- 文本被设置为空字符串,所以直接消失
修复方案
把获取输入框当前值的操作放到对应的点击函数内部,每次点击按钮时才去读取输入框的最新值。
修正后的代码
JavaScript
const box = document.getElementById("box"); const boxName = document.getElementById("boxName"); function changeBoxColor() { const typeColor = document.getElementById("typeColor").value; box.style.backgroundColor = typeColor; } function changeBoxName() { const typeName = document.getElementById("typeName").value; boxName.innerText = typeName; }
HTML
<head> <title>test</title> <link href="style.css" rel="stylesheet" type="text/css" /> </head> <body> <input id="typeColor" placeholder="Type a color..."> <button onclick="changeBoxColor()">Change Box Color</button> <input id="typeName" placeholder="Type a name..."> <button onclick="changeBoxName()">Change Box Name</button> <div id="box"> <center> <p id="boxName">Box</p> </center> </div> <script src="script.js"></script> </body>
CSS(无需修改)
body { margin: 0px; } #box { width: 100px; height: 100px; background-color: grey; margin-left: 100px; margin-top: 50px; display: flex; justify-content: center; align-items: center; }
额外优化建议
- 给变量加上
const或let声明,避免全局作用域污染 - 可以添加简单的输入校验,比如输入颜色时判断是否为有效颜色值,避免无效输入导致样式异常
内容的提问来源于stack exchange,提问作者sewqq
相关产品推荐
相关产品推荐

