<script type="text/javascript">
var sheep = prompt("How many sheeps do we have in the park?");
var rangers = prompt("How many rangers do we have in the park?");
function feedPerRanger (sheep, rangers) {
alert("Each Park Ranger should load " + sheep*2/rangers +
" lb(s) of feed into his/her BART today.");
}
feedPerRanger ();
</script>
您好
我还是初学者所以这可能是一个新手的错误。该脚本用于提醒用户每个公园护林员想要加载到他/她的BART上的饲料量。假设每只绵羊2磅,除以游侠数量。我一直收到以下NAN错误。任何人都可以解释原因吗?
“每个Park Ranger今天应该将NaN lb(s)的饲料加载到他/她的BART中。”
答案 0 :(得分:2)
改变这个:
function feedPerRanger (sheep, rangers) {
alert("Each Park Ranger should load " + sheep*2/rangers + " lb(s) of feed into his/her BART today.");
}
用这个:
function feedPerRanger () {
alert("Each Park Ranger should load " + sheep*2/rangers + " lb(s) of feed into his/her BART today.");
}
现在它有效;但是(在我看来)这不是做你想做的更好的方法。
您可以正确使用您的功能,传递两个通用参数如下:
function feedPerRanger(sheep, rangers) {
alert("Each Park Ranger should load " + sheep*2/rangers + " lb(s) of feed into his/her BART today.");
}
var sheep = prompt("How many sheeps do we have in the park?");
var rangers = prompt("How many rangers do we have in the park?");
feedPerRanger(sheep, rangers);
答案 1 :(得分:1)
修改 - 因为Ian suggested更改了参数的名称。
您应该将sheep
和rangers
变量传递给该函数。
你还应该检查它们是否包含数字。考虑一下:
var sheep = prompt("How many sheeps do we have in the park?");
// sheep = "some random string";
// alert ( sheep / 2 );
我可以按&#34; h&#34;或写任何我想要的。从MDN看prompt
result(of prompt)是一个包含用户输入的文本的字符串,或者值为null。
因此,请添加一点检查变量是否不是isNaN
的数字,如下所示:
isNaN(sheep)
此外,我可以在提示中按取消,然后绵羊或游侠将 null
。如果您更改此功能,则无法再使用其他 NaN
:
function feedPerRanger(sheep, rangers) {
if ((sheep && !isNaN(sheep)) && (rangers && !isNaN(rangers))) {
alert("Each Park Ranger should load " + sheep * 2 / rangers +
" lb(s) of feed into his/her BART today.");
} else {
alert("please use numbers");
}
}
var sheepCount = prompt("How many sheeps do we have in the park?");
var rangersCount = prompt("How many rangers do we have in the park?");
feedPerRanger(sheepCount, rangersCount);
答案 2 :(得分:0)
您的函数定义接受两个参数。
function feedPerRanger (sheep, rangers)
你没有给你打电话:
feedPerRanger ();
(此外,函数名称和括号之间没有空格)
创建函数定义时,您将为局部变量指定名称。也就是说,sheep
和ranger
是为传递的参数指定的名称,以便它们可以在函数中使用。因此,在创建函数定义时,sheep
和ranger
不是您在上面创建的变量。
有两种方法可以解决这个问题。
从函数定义中删除参数:
function feedPerRanger(){...}
将变量作为参数传递给函数:
function feedPerRanger(numSheep, numRangers){
alert("Each Park Ranger should load " + numSheep*2/numRangers + " lb(s) of feed into his/her BART today.");
}
feedPerRanger(sheep, rangers)