【发布时间】:2017-07-28 21:08:49
【问题描述】:
我正在尝试将用户输入与数组元素进行比较并相应地更改变量的值,但 for 循环并未遍历数组的所有元素,它在第一个停止。为什么不将输入与数组的所有元素进行比较?
<p>Month</p>
// Get Number Of Month (Jan = 1, Feb = 2, Mar = 3, etc.)
<input id="monthNumber" type="number"><br><br>
<button onclick="calculator()">Show</button><br><br>
<span id="result"></span><br><br>
还有代码
function getNumOfDays(){
var array = new Array(1,3,5,7,8,10,12, 01, 03, 05, 07, 08);
var monthNumber = document.getElementById("monthNumber").value;
var x;
for(var i = 0; i <= array.length; i++) {
if(monthNumber == array[i]) {
x = 31;
} else {
x = 30;
}
return (array[i] + " " + x) //it always returns 1 to array[i]
}
}
function calculator2() {
document.getElementById("result").innerHTML=getNumOfDays();
}
请在浏览器上尝试:
<p>Month</p>
// Get Number Of Month (Jan = 1, Feb = 2, Mar = 3, etc.)
<input id="monthNumber" type="number"><br><br>
<button onclick="calculator()">Show</button><br><br>
<span id="result"></span><br><br>
<script>
function getNumOfDays(){
var array = new Array(1,3,5,7,8,10,12, 01, 03, 05, 07, 08);
var monthNumber = document.getElementById("monthNumber").innerHTML;
var x;
console.log(monthNumber);
for(var i = 0; i <= array.length; i++) {
if(monthNumber == array[i]) {
x = 31;
break;
} else {
x = 30;
}
}
return x;
}
function calculator() {
document.getElementById("result").innerHTML=getNumOfDays();
}
</script>
【问题讨论】:
-
看来你真正想做的是在循环内调用函数,而不是函数内有循环...... 对于数组中的每个月调用该方法来计算多少天...
-
另外,旁注:您的逻辑在这里有缺陷。您假设没有 31 天的每个月将有 30 天。二月呢?
-
是的,它是如此简单,我们不知道如何解释它与我们已有的不同 - 将您的 return 语句移到循环之外。
-
约翰尼,您正在寻求帮助,说它在 1 次迭代后停止。我们告诉你为什么。如果它总是返回 30,那是一个单独的问题。
-
当月输入
08会打印 30 吗?也许你应该学习使用调试器来看看你的代码在做什么以及什么时候做的。
标签: javascript arrays for-loop