如何 "if not an integer , alert and repeat prompt" ?与 isNAN 相同
How to "if not an integer , alert and repeat prompt" ? the same with isNAN
我正在为此苦苦挣扎。
如何 "if not an integer , alert and repeat prompt" ?
我有警报工作,但我无法让它再次提示。
与 isNAN 相同,它根本不起作用!
谢谢
$(document).ready(function () {
var fizzBuzz = function () {
var userNum = prompt('Enter a number!');
var convertNum = +userNum;
for (var i = 1; i <= convertNum; i++) {
if (i % 15 === 0) {
$('ul').append('<li>' + "fizzbuzz" + '</li>');
} else if (i % 3 === 0) {
$('ul').append('<li>' + "fizz" + '</li>');
} else if (i % 5 === 0) {
$('ul').append('<li>' + "buzz" + '</li>');
} else if (isNaN(userNum)) {
alert("Input is not a number");
} else if (convertNum % 1 !== 0) {
alert('Please enter a whole number');
return false;
} else {
$('ul').append('<li>' + i + '</li>');
}
}
};
fizzBuzz();
});
只要有一个循环,只有在用户输入数字值后才会退出,例如
var userNum = null;
while(userNum == null || isNaN(userNum)){
userNum = prompt('Enter a number!');
}
实例:http://jsfiddle.net/7x8vjm3b/(尝试输入字母而不是数字)
您也可以将其设为 post 循环检查并为用户添加额外的消息
do{
userNum = prompt('Enter a number!');
if(isNaN(userNum)){
alert("You entered '" + userNum + "'. This is invalid - you must enter a number");
}
}while(isNaN(userNum));
这应该有效...
var fizzBuzz = function () {
var userNum = prompt('Enter a number!');
var convertNum = +userNum;
if(isNaN(userNum)){
console.log('not a number');
fizzBuzz()
}else{
doSomethingElse()
}
};
fizzBuzz();
您的 if 语句和循环的逻辑顺序对于您要实现的目标而言是不正确的。你想先检查这个数字是否是一个数字,然后你想检查它是否是一个整数,然后如果它通过了这两个要求你想进入for循环。
$(document).ready(function () {
var fizzBuzz = function () {
var userNum = prompt('Enter a number!');
var convertNum = +userNum;
if(isNaN(userNum)){
alert("Input is not a number");
fizzBuzz();
}
else if (convertNum % 1 !== 0) {
alert('Please enter a whole number');
fizzBuzz();
}
else {
for (var i = 1; i <= convertNum; i++) {
if (i % 15 === 0) {
$('ul').append('<li>' + "fizzbuzz" + '</li>');
} else if (i % 3 === 0) {
$('ul').append('<li>' + "fizz" + '</li>');
} else if (i % 5 === 0) {
$('ul').append('<li>' + "buzz" + '</li>');
} else {
$('ul').append('<li>' + i + '</li>');
}
}
}
};
fizzBuzz();
});
我正在为此苦苦挣扎。 如何 "if not an integer , alert and repeat prompt" ? 我有警报工作,但我无法让它再次提示。
与 isNAN 相同,它根本不起作用!
谢谢
$(document).ready(function () {
var fizzBuzz = function () {
var userNum = prompt('Enter a number!');
var convertNum = +userNum;
for (var i = 1; i <= convertNum; i++) {
if (i % 15 === 0) {
$('ul').append('<li>' + "fizzbuzz" + '</li>');
} else if (i % 3 === 0) {
$('ul').append('<li>' + "fizz" + '</li>');
} else if (i % 5 === 0) {
$('ul').append('<li>' + "buzz" + '</li>');
} else if (isNaN(userNum)) {
alert("Input is not a number");
} else if (convertNum % 1 !== 0) {
alert('Please enter a whole number');
return false;
} else {
$('ul').append('<li>' + i + '</li>');
}
}
};
fizzBuzz();
});
只要有一个循环,只有在用户输入数字值后才会退出,例如
var userNum = null;
while(userNum == null || isNaN(userNum)){
userNum = prompt('Enter a number!');
}
实例:http://jsfiddle.net/7x8vjm3b/(尝试输入字母而不是数字)
您也可以将其设为 post 循环检查并为用户添加额外的消息
do{
userNum = prompt('Enter a number!');
if(isNaN(userNum)){
alert("You entered '" + userNum + "'. This is invalid - you must enter a number");
}
}while(isNaN(userNum));
这应该有效...
var fizzBuzz = function () {
var userNum = prompt('Enter a number!');
var convertNum = +userNum;
if(isNaN(userNum)){
console.log('not a number');
fizzBuzz()
}else{
doSomethingElse()
}
};
fizzBuzz();
您的 if 语句和循环的逻辑顺序对于您要实现的目标而言是不正确的。你想先检查这个数字是否是一个数字,然后你想检查它是否是一个整数,然后如果它通过了这两个要求你想进入for循环。
$(document).ready(function () {
var fizzBuzz = function () {
var userNum = prompt('Enter a number!');
var convertNum = +userNum;
if(isNaN(userNum)){
alert("Input is not a number");
fizzBuzz();
}
else if (convertNum % 1 !== 0) {
alert('Please enter a whole number');
fizzBuzz();
}
else {
for (var i = 1; i <= convertNum; i++) {
if (i % 15 === 0) {
$('ul').append('<li>' + "fizzbuzz" + '</li>');
} else if (i % 3 === 0) {
$('ul').append('<li>' + "fizz" + '</li>');
} else if (i % 5 === 0) {
$('ul').append('<li>' + "buzz" + '</li>');
} else {
$('ul').append('<li>' + i + '</li>');
}
}
}
};
fizzBuzz();
});