javascript - 为什么这个简单的 JavaScript 程序不起作用?
问题描述
我试图从用户输入的数字数组中显示最小值、最大值和平均值。
浏览器的控制台告诉我 min() 和 max() 不是函数
显示错误:
未捕获的类型错误:max 不是
HTMLInputElement.onclick (numbers.html:7)
onclick @ numbers.html:7处的函数
只有平均功能有效,其他功能无效......为什么?
var i;
var num = new Array();
window.alert("enter 10 numbers:");
for (i = 0; i < 10; i++) {
num[i] = parseInt(prompt("num"));
}
function max() {
var max = num[0];
for (i = 0; i < 10; i++) {
if (max < num[i]) {
max = num[i];
}
}
window.alert("the max is: " + max);
}
function min() {
var min = num[0];
for (i = 0; i < 10; i++) {
if (min > num[i]) {
min = num[i];
}
}
window.alert("the min is: " + min);
}
function mean() {
var mean = 0;
for (i = 0; i < 10; i++) {
mean += num[i];
}
mean = mean / 10;
window.alert("mean : " + mean);
}
<!DOCTYPE html>
<html>
<head>
<title>Numbers</title>
</head>
<body>
<input type="button" value="max" onclick="max()"><br>
<input type="button" value="min" onclick="min()"><br>
<input type="button" value="mean" onclick="mean()"><br>
<script src="numbers.js"></script>
</body>
</html>
解决方案
尝试以不同的方式调用函数,例如,您可以调用 max 函数,并确保在 html onclick 处理程序中将其更改为最大值。当你用“var”声明一个变量时,它是全局声明的(你应该避免这样做并改用 let 和 const 的一个很好的理由)。您的代码应如下所示:
var i;
var num = new Array();
window.alert('enter 10 numbers:');
for (i = 0; i < 10; i++) {
num[i] = parseInt(prompt('num'));
}
var max;
var min;
function maximum() {
max = num[0];
for (i = 0; i < 10; i++) {
if (max < num[i]) {
max = num[i];
}
}
window.alert('the max is: ' + max);
}
function minimum() {
min = num[0];
for (i = 0; i < 10; i++) {
if (min > num[i]) {
min = num[i];
}
}
window.alert('the min is: ' + min);
}
function mean() {
var m = (max + min) / 2;
window.alert('mean : ' + m);
}
你的html:
<input type="button" value="max" onclick="maximum()"><br>
<input type="button" value="min" onclick="minimum()"><br>
<input type="button" value="mean" onclick="mean()"><br>
推荐阅读
- css - 我的本地 python 服务器不知道要运行的静态 css 文件
- python - 如何添加子文件夹
- image - 在 keras 中实现没有 textImagegenerator 的 CTC
- javascript - React 组件样式封装
- youtube-api - YouTube Reporting API 报告为空白
- kotlin - 在 kotlin 中哪个是静态的,哪个是单例的?
- sql - 将 nvarchar 列类型更改为 datetime
- ssh - ssh-add“连接代理时出错:连接被拒绝”
- image - 是否可以选择带有打开的窗口(如浏览器)的部分桌面并对其进行筛选?
- javascript - AMCharts 4按键事件未触发