2

我在外部 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;
    }

}
}   
4

5 回答 5

5

parseInt是一个全局函数。您正在尝试从不存在的字符串对象中访问它。

guessNum = parseInt(inGuess, 10); // Tell it what base to use.  Protect against 08 being interpretued as octal.

这将是处理这个问题的正确方法。

parseInt Mozilla 开发者网络文档

  • 脚注 - parseInt 可以返回NaNtypeof实际返回的比较number
于 2013-09-17T16:21:23.050 回答
2

parseInt是一个方法window,而不是一个字符串。你要

guessNum = parseInt(inGuess, 10);

第二个参数确保您的代码将第一个参数视为以 10 为底的数字,这意味着它将正确解析"010"10并拒绝"0x10"而不是将其解析为16.

我以为js中的所有东西基本上都是对象

它们对象,但这并不意味着所有对象都定义了相同的一组方法。

于 2013-09-17T16:21:38.840 回答
1

如果您出于某种特殊原因确实想这样使用它,您可以在 String 对象上定义原型:

String.prototype.parseInt = function() {

    return parseInt(this,10);
}

var inGuess = "26";

alert(inGuess.parseInt());
于 2013-09-17T16:28:22.830 回答
0

您的语法不太正确...从控制台:

> x = parseInt("2", 10)
2

另外,请记住一些来自文档的内容...

如果输入字符串以“0”开头,则基数为 8(八进制)或 10(十进制)。确切选择哪个基数取决于实现。ECMAScript 5 指定使用 10(十进制),但并非所有浏览器都支持这一点。出于这个原因,在使用 parseInt 时总是指定一个基数

parseInt() 文档

于 2013-09-17T16:23:00.837 回答
0

inGuess 是一个字符串,而字符串没有 parseInt 函数。parseInt 是一个全局函数。

做这个:

guessNum = parseInt(inGuess); 
于 2013-09-17T16:23:01.457 回答