字符计数器和限制器正在出现Nan错误

时间:2014-09-05 01:53:19

标签: javascript nan

var cat = prompt("What Do You Want To Tweet??!").length;

if (cat >= 140) {
    confirm("Sorry but your Tweet was over the 140 character limit by: " + cat - 140);
    confirm("You need to resubmit a Tweet that is not over the 140 Character limit");
} else {
    confirm("Success, Your Tweet has been posted!");
}

我尝试了很多不同的东西,但这个Nan错误总是我最后的障碍,我无法得到。我很确定cat var不会被视为一个数字,但我不知道如何让计算机将其视为一个数字,我很确定我只需要了解这些基础知识。我也试过移动.length,但无济于事!

3 个答案:

答案 0 :(得分:2)

你需要括号:

confirm("Sorry but your Tweet was over the 140 character limit by: " + (cat - 140));

这是因为+是左关联的。因此,它首先将cat附加到邮件中,然后尝试从中减去140。这会尝试将邮件转换为数字,但该数字不起作用并返回NaN

顺便说一句,当你cat = prompt(...).length时,你得到了长度,但你丢失了推文。您需要将响应放在变量中,然后获取其长度:

var tweet = prompt(...);
var cat = tweet.length;

答案 1 :(得分:1)

它与长度无关,它与操作顺序有关

您的代码基本上是

("string" + cat) - 140

您需要在计算周围添加括号,以便在连接之前进行计算。

"string" +  (cat - 140)

答案 2 :(得分:0)

除了@Barmar所说的,如果你在开头减去它,你可以避免重复140:

var cat = prompt("What Do You Want To Tweet??!").length - 140;
if(cat < 0) {
    confirm("Success, Your Tweet has been posted!");
} else {
    confirm("Sorry but your Tweet was over the 140 character limit by: " + cat
      + "\n\n"
      + "You need to resubmit a Tweet that is not over the 140 Character limit");
}

但是,请考虑允许140个字符的消息。 IMO失败是因为超过140比0很奇怪。