【问题标题】:ParseInt codebreakParseInt 代码破解
【发布时间】:2015-03-25 04:29:59
【问题描述】:

大家好,我有一个希望修复的代码问题: 这是我的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(不考虑数字)我已放置“parseInt”以尝试解决此问题,但它仍然出现“NaN”。我该怎么做才能确保不是 2+2 = 22 而是 2+2 = 4

【问题讨论】:

  • 没有if你不能有else if
  • 是的,我知道,这只是我的代码的一部分,我以示例为例
  • 这不是有效的 JS。 else 连接到什么? farm 元素是什么? input?然后你需要得到它的value,而不是它的innerHTML
  • farm 里面有什么你能分享一个示例输入吗?
  • farm 输入文本框还是一些div?如果它是一个文本框,请改用.value,并且在parseInt之前,检查farm是否不是未定义/空,然后添加

标签: javascript parseint


【解决方案1】:

看起来 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,相同的代码就可以正常工作

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      这对我来说很有效,假设我理解你想要做什么。我将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】:
        try this hope its working for you
        
        
           var farm = document.getElementById("farm").innerHTML;
        
           farm = parseInt(farm + x);
        
           document.getElementById("farm").innerHTML = parseInt(farm);}
        

        【讨论】:

        • 不太可能工作,请尝试测试它。首先,farminnerHTML,假设它是一个 input,将会为空。将null 添加到任何内容然后执行parseInt 的结果不会做任何有用的事情。
        • 另外我不认为farminput,因为 OP 使用的是 innerHTML 而不是 value
        【解决方案5】:

        由于您使用了 innerHtml 来获取值,所以我假设这不是输入元素。 var farm = document.getElementById("farm").innerHTML;

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

        希望这会有所帮助。

        【讨论】:

          猜你喜欢
          • 2018-06-15
          • 2016-06-07
          • 2014-05-31
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-10-10
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多