javascript - 使用函数和数组计算/输出错误:不是数字
问题描述
背景:我正在练习数组和函数,但在计算数组项的总和时遇到了麻烦。我很确定我正在编写的函数有问题,但我不确定是什么。使用 8 个输入字段,我一次将数据拉入一个数组并转换为浮点数(现在......我稍后会尝试修复它)。我创建了一个函数来计算这个列表的总数,但它只输出 NaN。
任何建议都非常感谢!
function myfunction() {
list = [];
list[0] = parseFloat(document.getElementById('number1').value);
list[1] = parseFloat(document.getElementById('number2').value);
list[2] = parseFloat(document.getElementById('number3').value);
list[3] = parseFloat(document.getElementById('number4').value);
list[4] = parseFloat(document.getElementById('number5').value);
list[5] = parseFloat(document.getElementById('number6').value);
list[6] = parseFloat(document.getElementById('number7').value);
list[7] = parseFloat(document.getElementById('number8').value);
function total(myvals) {
let total = 0;
for (let i = 0; i <= myvals.length; i++) {
total += myvals[i];
}
return total;
}
document.getElementById('results').innerHTML = total(list);
}
<form>
<input type="text" name="number1" id="number1"><br>
<input type="text" name="number2" id="number2"><br>
<input type="text" name="number3" id="number3"><br>
<input type="text" name="number4" id="number4"><br>
<input type="text" name="number5" id="number5"><br>
<input type="text" name="number6" id="number6"><br>
<input type="text" name="number7" id="number7"><br>
<input type="text" name="number8" id="number8"><br>
<input type="submit" value="Compute Score" onclick="javascript:myfunction()">
</form>
<div id="results"></div>
解决方案
这是一个使用 for 循环和querySelectorAll的简单示例。
此外,我稍微清理了您的代码。运行以下代码段:
编辑:包括一些评论以显示正在发生的事情。
function myfunction() {
let total = 0;
//get the value for each element being called by querySelectorAll
//add values to total to get a sum
document.querySelectorAll('input').forEach(el => total += +el.value);
//append the new value to the results div
document.querySelector('#results').innerHTML = total;
}
<form>
<input type="text" name="number1" id="number1"><br>
<input type="text" name="number2" id="number2"><br>
<input type="text" name="number3" id="number3"><br>
<input type="text" name="number4" id="number4"><br>
<input type="text" name="number5" id="number5"><br>
<input type="text" name="number6" id="number6"><br>
<input type="text" name="number7" id="number7"><br>
<input type="text" name="number8" id="number8"><br>
</form>
<br/><br/>
<button type="submit" onclick="myfunction()">Compute Score</button>
<br/><br/>
<div id="results"></div>
推荐阅读
- vb.net - 响应式 Windows 窗体 (VB.Net)
- c - 完全相同的代码,一个段错误,一个没有
- c - 构建时出现此错误: `fb_info' 的多个定义;framebuffer.h:22: 首先在这里定义 collect2.exe: 错误: ld 返回 1 退出状态
- reactjs - 如何键入异步 thunk 的调度?
- xamarin.forms - 如何从 Xamarin Forms 的搜索栏中选择项目
- c - 逐行读取TXT文件并提取数字......如何?
- terraform - 带有 Terraform 本地预配器的 Azure 恢复服务保管库
- gstreamer - 需要使用 gstreamer 将 RTSP 流解码为 V4l2loopback
- flutter - Flutter:使用 easy_localization 和 device_preview 的正确方法是什么
- python - 如何解决 .close() 无效语法