点击按钮后控制台值更新但input输入框值未变化,代码哪里出错?
问题原因
你代码的核心问题是对DOM属性的读取和赋值逻辑理解有误:
- 代码第一行
let Eingabe = document.getElementById("eingabe").value;是直接读取了input元素初始化时的value值,赋值给了Eingabe变量,这是值类型的拷贝,和原DOM元素没有关联 - 后续你修改
Eingabe = userinput时,只是修改了这个普通变量的值,没有把新值回写到input元素的value属性上,所以页面不会同步更新
修正方案
- 把
Eingabe改成存储DOM元素的引用,而非直接存初始值 - 每次更新内容时,显式给元素的
value属性赋值
修正后的JS代码如下:
// 存储input元素引用,而非直接读value const Eingabe = document.getElementById("eingabe"); const Eins = document.getElementById("ein"); const Zwei = document.getElementById("zwei"); let userinput = ""; console.log("bevor:", Eingabe.value); Eins.addEventListener("click", function() { userinput = userinput + Eins.innerHTML // 把新值赋值给元素的value属性 Eingabe.value = userinput; console.log(Eingabe.value); }) Zwei.addEventListener("click", function() { userinput = userinput + Zwei.innerHTML; Eingabe.value = userinput; console.log(Eingabe.value); })
补充说明
你的input设置了type="number",如果后续需要拼接非数字内容,要注意修改input的type,否则浏览器会自动清空不合法的数值内容。
内容的提问来源于stack exchange,提问作者fabio
相关产品推荐
相关产品推荐

