gpt4 book ai didi

javascript - 无论填写的值如何,我的计算器都会返回值 0

转载 作者:行者123 更新时间:2023-11-28 14:28:52 25 4
gpt4 key购买 nike

我正在制作一个小计算器(练习函数等),但无论我填写什么,它总是返回值 0。

我的 HTML:

<!DOCTYPE html>
<html lang="en">
<head>
<title>Index</title>

<script type="text/javascript" src="index.js"></script>
<link rel="stylesheet" type="text/css" href="normalize.css">
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
<div id="mainContainer">
<form>
<input type="number" id="value1">
<select id="operator"><option value="add">add</option><option value="minus">minus</option><option value="div">Divide</option><option value="mul">multiple</option></select>
<input type="number" id="value2">
<button id="calculate">Calculate</button>
</form>
</div>
</body>
</html>

我的 JavaScript:

function prepCalculate() {
let v1 = document.querySelector("#value1");
let v2 = document.querySelector("#value2");

if (isNaN(v1) || isNaN(v2)) {
window.alert('one of the inputs does not equal a nummeric value!');

return;
} else {
calculate();
}
}

prepCalculate();

function calculate() {
let v1 = document.querySelector("#value1");
let v2 = document.querySelector("#value2");
let operator = document.querySelector("#operator");
let cal;

if (operator == 'add') {
cal = v1 + v2;
} else if (operator == 'minus') {
cal = v1 - v2;
} else if (operator == 'div') {
cal = v1 / v2;
} else {
cal = v1 * v2;
}

alert(cal);
return cal;
}

我的 console.log() 也没有显示任何错误...所以我的问题:我做错了什么?

最佳答案

有几个问题:

  1. 您尝试使用元素本身,而不是它们的值。使用.value访问值,例如:

    let v1 = document.querySelector("#value1").value;
    // ---------------------------------------^^^^^^
    let v2 = document.querySelector("#value2").value;
    // ---------------------------------------^^^^^^
    let operator = document.querySelector("#operator").value;
    // -----------------------------------------------^^^^^^
  2. 您有<button id="calculate">Calculate</button>form元素。默认typebutton元素是"submit" ,因此单击该按钮将提交表单。您需要type="button"以避免这种情况。

  3. 您尚未将按钮连接到 calculate函数或prepCalculate功能。了解如何设置事件处理程序(例如 addEventListener )。

  4. valueinput始终是一个字符串。大多数操作都会将这些字符串强制转换为数字,但是 +不会(因为 + 与字符串是连接)。您需要转换 value s 到数字。请参阅this answer有很多选择可以做到这一点。

<小时/>

旁注:虽然您可以使用 querySelector("#id")按照你的方式,通过其 id 获取元素的惯用方式(也是最快的,但通常并不重要)值为 document.getElementById(id) (否#)。

关于javascript - 无论填写的值如何,我的计算器都会返回值 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52254952/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com