【发布时间】:2018-04-24 19:13:45
【问题描述】:
我正在尝试用 html 和 JavaScript 制作一个计算器。单击按钮后,我试图将数字插入到我的 div 中。当我这样做时,默认的“0”消失了,它根本不插入任何东西。
function copy(event) {
var newValue = event.target.value;
document.querySelector("#display").innerHTML = newValue;
}
var textfield = document.querySelector("#btn_7");
textfield.addEventListener("click", copy);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="frame">
<div id="display">0</div>
<button id="btn_7">7</button>
<button id="btn_8">8</button>
<button id="btn_9">9</button>
<button id="btn_div">/</button>
<button id="btn_4">4</button>
<button id="btn_5">5</button>
<button id="btn_6">6</button>
<button id="btn_prod">*</button>
<button id="btn_1">1</button>
<button id="btn_2">2</button>
<button id="btn_3">3</button>
<button id="btn_min">-</button>
<button id="btn_clear">C</button>
<button id="btn_0">0</button>
<button id="btn_eq">=</button>
<button id="btn_plus">+</button>
</div>
如果我向 newValue 变量添加一个字符串,它会显示在我的 div 中。所以这意味着当我按下按钮时它不会给 div 任何东西。有没有办法解决这个问题?
关于var textfield = document.querySelector("#btn_7");
现在我必须为每个按钮都做这个,那会占用很多行有没有更好的方法?
【问题讨论】:
-
实际上,您可以将
textfield.addEventListener("click", copy);替换为document.querySelector("#frame").addEventListener("click", copy);,因为event.target已经处理了事件委托。不过,您可能需要检查if(event.target.matches("button"))之类的内容。
标签: javascript jquery html css calculator