javascript函数无法按预期工作

时间:2013-09-17 16:19:21

标签: javascript function

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

}
}   

5 个答案:

答案 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

  • 脚注 - parseInt可以返回NaN,与typeof相比,实际返回number

答案 1 :(得分:2)

parseIntwindow上的方法,而不是字符串。你想要

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);