我需要帮助弄清楚我做错了什么,我试图制作一个函数,你应该在两个不同的盒子中输入两个数字并循环直到你输入一个有效的数字! (对不起我的代码和我的英文)
var x = parseInt(prompt("Please enter a number!"));
var y = parseInt(prompt("Please enter a number!"));
function add(x, y) {
var z = x + y;
var i = false;
do {
if (isNaN(x)) {
alert("Invalid entry. Please enter a number!")
} else if (isNaN(y)) {
alert("Invalid entry. Please enter a number!")
} else {
alert(x + " + " + y + " = ");
i = true;
}
while (i == false);
}
}
add(x, y);
答案 0 :(得分:1)
此代码存在以下几个问题:
这是固定代码:
function add() {
do {
var x = parseInt(prompt("Please enter a number!"));
var y = parseInt(prompt("Please enter a number!"));
var z = x + y;
var i = false;
if (isNaN(x)) {
alert("Invalid entry. Please enter a number!")
} else if (isNaN(y)) {
alert("Invalid entry. Please enter a number!")
} else {
alert(x + " + " + y + " = " + z);
i = true;
}
}
while (i == false);
}
add();
答案 1 :(得分:1)
isNaN()是javascript函数,如果给定的值是Not-a-Number,则返回true。
var a = isNaN('127') ; // return false
var a = isNaN('1273 ') ; // return false
var b = isNaN(-1.23) ; // return false
var c = isNaN(5-2); // return false
var d = isNaN(0) ; // return false
var e = isNaN("Hell o") ; // return true
var f = isNaN("2005/12/12"); // return true
答案 2 :(得分:0)
试试这个:
$(document).ready(function(){
var x = parseInt(prompt("Please enter First number!"));
var y = parseInt(prompt("Please enter Second number!"));
function add(x, y) {
var z = x + y;
var i = false;
do {
if (isNaN(x)) {
alert("Invalid entry for first number. Please enter a number!");
x = parseInt(prompt("Please enter first number again!"));
} else if (isNaN(y)) {
alert("Invalid entry for second one. Please enter a number!");
y = parseInt(prompt("Please enter Second number again!"));
} else {
z=x+y;
alert(x + " + " + y + " = "+ z);
i = true;
}
}while (i == false);
}
add(x, y);
});
这是完整的演示版本是小提琴结帐。
答案 3 :(得分:0)
有几个问题:
它在句法上无效,你最终获得了一个独立的while (i == false);
(这很好,但如果i
永远不会结束{{1} })和你代码下的悬空false
。您需要将}
行移至while
的结束}
下方。
如果do
或x
为y
,则您的NaN
函数会循环,直到它们发生变化...但该循环中的代码不会更改它们。< / p>
我不知道你想要add
做什么(因为只是添加数字并不需要一个功能),但如果目标是继续提示用户,你必须移动提示进入循环:
add
答案 4 :(得分:0)
您也可以在不使用do while循环的情况下递归执行此操作,方法是询问x
和y
值,直到两者都正确为止。另请注意,我使用基数值10作为parseInt(string, radix);
因为文档将radix
描述为:{/ p>
的文档中查看更多内容表示上述字符串的基数的整数。 始终指定此参数以消除读者的困惑和 保证可预测的行为。产生不同的实现 未指定基数时的结果不同。
代码示例:
function askXY(x, y) {
var x_ = x,
y_ = y;
if(typeof x_ === "undefined") {
x_ = parseInt(prompt("Please enter a number for x!"), 10);
}
if(typeof y_ === "undefined") {
y_ = parseInt(prompt("Please enter a number for y!"), 10);
}
if(isNaN(x_) || isNaN(y_)) {
alert("Invalid entry. Please enter a number!");
// The magic is here, we keep the x or y if either one of those are correct
// and if not, we give undefined so that value will be asked again from the user
return askXY(
!isNaN(x_) ? x_ : undefined,
!isNaN(y_) ? y_ : undefined
);
}
// success!
alert(x_ + " + " + y_ + " = " + (x_ + y_));
}
askXY();
查看我的JsFiddle example