2 回答
TA贡献1780条经验 获得超4个赞
calculate是一个返回数字的函数。数字没有value属性。你想要的只是函数内部的返回值,所以:
改变:
result.innerHTML = calculate(input1, input2).value;
至:
result.innerHTML = calculate(input1, input2);
而且,正如其他人在评论中指出的那样,您的if声明试图将页面中的元素与true.
相反,您应该检查元素包含的内容。如果是表单域(输入、选择、文本区域等),请检查元素的.value属性。如果没有,请检查其.textContent属性。现在,根据您的用例,您需要知道单击了哪个按钮,以便您可以执行正确的数学运算。为此,您需要处理click事件并执行正确的操作。请参阅以下内容以及可能的解决方案的评论:
// Get references to the elements you'll work with
let input1 = document.getElementById("one");
let input2 = document.getElementById("two");
let result = document.getElementById("result");
// Set up a click event hanlder at the document level
document.addEventListener("click", calculate);
function calculate(event) {
// First, check to see if the event originated at one of the math buttons
if(event.target.classList.contains("operator")){
// One of the operator buttons was clicked.
// Get the textContent of that button and do the appropriate math
let operation = event.target.textContent;
if(operation === "+"){
// The prepended + sign converts the string value to a number
result.textContent = +input1.value + +input2.value;
} else if(operation === "-") {
result.textContent = +input1.value - +input2.value;
} else if(operation === "*") {
result.textContent = +input1.value * +input2.value;
} else {
result.textContent = +input1.value / +input2.value;
}
}
}
<input id="one"><br>
<input id="two">
<button type="button" class="operator">+</button>
<button type="button" class="operator">-</button>
<button type="button" class="operator">*</button>
<button type="button" class="operator">/</button>
<br>
<span id="result"></span>
TA贡献1856条经验 获得超17个赞
你为什么在 calculate(input1, input2).value 中做 .value ?因为你不是返回一个对象,而是一个数值,所以你不需要做 .value
使用 onclick 功能添加点击事件
添加回答
举报