ParseInt codebreak

时间:2015-03-25 04:30:00

标签: javascript parseint

大家好我有一个代码问题,我希望看到修复: 这是我的else if声明:

 var x = parseInt(2);
 var out = document.getElementById("output");

 var w = prompt("hunt or farm? dare to fight?");

 out.innerHTML = w;

 else if (w === "farm") {

     var farm = document.getElementById("farm").innerHTML;

     farm = parseInt(farm) + x;

     document.getElementById("farm").innerHTML = farm;
 }

在html中使用div我已经链接了某些东西来制作文本基础策略游戏。但我的问题是农场是NaN(不算是一个数字)我放置了#34; parseInt"尝试解决这个问题,但它仍然提出了" NaN"。我该怎么做以确保而不是2 + 2 = 22使2 + 2 = 4

5 个答案:

答案 0 :(得分:0)

try this hope its working for you


   var farm = document.getElementById("farm").innerHTML;

   farm = parseInt(farm + x);

   document.getElementById("farm").innerHTML = parseInt(farm);}

答案 1 :(得分:0)

您需要确保具有farm id的innerHTML的元素以数字开头,而不是字母。 x也是如此。此外,他们需要至少有一个号码。试试parseInt("hello12345"),您将获得NaNparseInt("hello")也是如此。尝试添加NaN和一个数字,你仍然会得到NaN,就像你可能正在做的那样。 parseInt("hello12345hello") + parseInt("12345hello")将返回NaNparseInt("12345hello")将返回12345。此代码将使用正则表达式"hello12345".replace(/^(\D+)/, "")解析前导字母,结果为12345。但是,您可能想要在使用之前检查是否有任何数字,因为只有字母才会生成NaN。有关javascript parseInt函数何时返回NaN的详细信息,请查看文档https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/parseInt

答案 2 :(得分:0)

看起来farm是div / block元素:

最好检查farm内的值是否有效,并确保其有效数字。

var farm = document.getElementById("farm").innerHTML.replace(/\s/gm,"");
    // trimming any empty spaces
    // checking for is it a valid number
    farm = farm!="" && !isNaN(farm)? parseInt(farm) + x : x;
    document.getElementById("farm").innerHTML = farm;

<强> DEMO

如果farm是输入文本框,只需将innerHTML替换为value,相同的代码就可以正常使用

答案 3 :(得分:0)

这对我很有用,假设我明白你要做什么。我将farm's innerHTML传递给Number()构造函数。替代方案是使用parseInt或更好的速记变体:+farm.innerHTML + x

  var x = parseInt(2),
      w = prompt("hunt or farm? dare to fight?");

  if (w === 'farm') {
    var farm = document.getElementById("farm"),
        out = document.getElementById("output"),
        farmValue = Number(farm.innerHTML) + x;

    out.innerHTML = w;
    farm.innerHTML = farmValue;
  };

答案 4 :(得分:0)

因为你已经使用innerHtml获取值所以我假设这不是一个输入元素。     var farm = document.getElementById("farm").innerHTML;

如果是这种情况,那么确保你得到的innerHtml是一个数字,如果是,那么pasreInt的结果将是一个数字。 由于innerHtml也包含html标签,因此您可以尝试使用 innerText 。 它将始终返回包含在元素内的文本,该元素可以应用parseInt / parseFloat来获取它的整数部分。

希望这有帮助。