大家好,我需要帮助我的网页脚本作业: 功能:计数器 参数:一个数组数组。 返回:数组中的负数,零数和正数 注意:您必须在函数中使用switch语句。 这就是我到目前为止所拥有的
<!DOCTYPE html>
<head>
<title>Exercise 4.11</title>
</head>
<body>
<script>
var num = new Array();
num[0] = parseInt(prompt("Please enter a number",""),10);
num[1] = parseInt(prompt("Please enter a number",""),10);
num[2] = parseInt(prompt("Please enter a number",""),10);
num[3] = parseInt(prompt("Please enter a number",""),10);
num[4] = parseInt(prompt("Please enter a number",""),10);
counter(num);
function counter(num) {
var i,
count = {
negative: 0,
zero: 0,
positive: 0,
};
for(i = 0; i < num.length; i++) {
switch (true) {
case (num[i] < 0):
count.negative++;
break;
case (num[i] === 0):
count.zero++;
break;
case (num[i] > 0):
count.positive++;
break;
}
}
document.write(count);
};
</script>
</body>
</html>
答案 0 :(得分:2)
这有几个问题,但由于你没有真正提出问题,我会随机解决这些问题。
counter
的方法,但您还没有调用它document.write
退出该方法后尝试return
。prompts
将返回字符串,需要使用parseInt
快速推动正确的方向:
在您提示输入数字后调用counter
方法,并更改方法声明中的语法,以便在定义之前调用它:
var num = new Array();
num[0] = prompt("Please enter a number","");
num[1] = prompt("Please enter a number","");
num[2] = prompt("Please enter a number","");
num[3] = prompt("Please enter a number","");
num[4] = prompt("Please enter a number","");
counter(num);
function counter(num){
// your logic
}
<强>更新强>
在您的方法结束时,您将要打印结果。正如您所发现的,JavaScript正试图通过将其转换为字符串来描述您要求打印的对象。它最终给你的字符串是非常不合适的。更好的是在count
对象中打印每个单独的键:
document.write(count.negative);
document.write(count.zero);
document.write(count.positive);
我还会考虑使用document.write
之外的其他内容,但原因超出了这个问题的范围。
答案 1 :(得分:0)
我猜你的问题是你的计数器对象的zero
属性总是0,因为prompt
函数返回string
而不是{{1} 1}}。如果要比较的两个对象完全相同,number
运算符仅返回===
,而true
和<
运算符则更灵活。您应该对>
返回的值调用parseInt
,或更改prompt
语句。以下是两个选项的示例:
case
num[0] = parseInt(prompt("Please enter a number",""), 10);
这是您可以采取的两种不同方法。不要把它们结合起来。
答案 2 :(得分:0)
希望我没有迟到。这是我的2c:
<强> jsBin demo 强>
var count = {negative:0, zero:0, positive:0},
i = 0 ;
(function ask(){
var n = parseInt( prompt("Please enter a number",""), 10 );
switch (true) {
case (n<0):
count.negative++;
break;
case (n===0):
count.zero++;
break;
case (n>0):
count.positive++;
break;
default:
alert( "Please use only Numbers!" );
ask(); // Something went wrong... Ask again!
}
i++;
if(i<5) ask(); // ASK 5 times
}()); // Start asking
document.body.innerHTML = JSON.stringify(count, null, 4) ;
如果您没有使用数字,上面会立即提醒您,并重复此过程!
此外,还需要parseInt
(10是基数参数。)以确保从提示的字符串结果中获取数字。