我在外部javascript文件中有以下代码。我在下面的这一行收到错误:guessNum = inGuess.parseInt();
firebug告诉我parseInt不是一个函数。我认为js中的所有东西基本上都是对象(至少这是我记得在W3School中读到的东西)。我确信这很简单,我只是卡住了。欢迎任何建议。感谢
function inputNum()
{
/* initialize variables */
var inGuess = "";
var loopCt;
var guessResult = "";
var correctNum = 26;
var guessNum = 0;
for (loopCt=1;loopCt<11;loopCt++)
{
inGuess = prompt("Please enter your guess(enter -1 to exit) Do not press Enter","0");
if (inGuess == "-1") { break; }
if (inGuess==null || inGuess=="")
{
alert("Blanks are not allowed. To exit enter '-1'.");
}
else
{
guessNum = inGuess.parseInt();
if (inGuess == "26")
{
alert("Congratulations, you guess correctly!");
guessResult="Correct!";
}
else
if (guessNum < correctNum)
{
guessResult="Too low";
}
else
{
guessResult="Too high";
}
document.getElementById('emp'+loopCt).innerHTML=inGuess;
document.getElementById('ct'+loopCt).innerHTML=guessResult;
}
}
}
答案 0 :(得分:5)
parseInt
是一个全局函数。您正试图从字符串对象访问它,它不存在。
guessNum = parseInt(inGuess, 10); // Tell it what base to use. Protect against 08 being interpretued as octal.
这将是处理此问题的正确方法。
parseInt Mozilla Developer Network Docs
NaN
,与typeof
相比,实际返回number
答案 1 :(得分:2)
parseInt
是window
上的方法,而不是字符串。你想要
guessNum = parseInt(inGuess, 10);
第二个参数确保您的代码将第一个参数视为基数为10的数字,这意味着它会正确地将"010"
解析为10
并拒绝"0x10"
而不是将其解析为16
。
我认为js中的所有内容基本上都是对象
他们是对象,但这并不意味着所有对象都在其上定义了相同的方法集。
答案 2 :(得分:1)
如果你想在任何奇特的原因上使用它,你可以在String对象上定义原型:
String.prototype.parseInt = function() {
return parseInt(this,10);
}
var inGuess = "26";
alert(inGuess.parseInt());
答案 3 :(得分:0)
您的语法不太正确......从控制台:
> x = parseInt("2", 10)
2
另外,请记住一些来自文档的内容......
如果输入字符串以“0”开头,则基数为八(八进制)或10(十进制)。究竟选择哪个基数是依赖于实现的。 ECMAScript 5指定使用10(十进制),但并非所有浏览器都支持此功能。因此,在使用parseInt 时始终指定基数。
<强> parseInt() Documentation 强>
答案 4 :(得分:0)
inGuess是一个字符串,字符串没有parseInt函数。 parseInt是一个全局函数。
这样做:
guessNum = parseInt(inGuess);