【问题标题】:Convert String Object to integer in Javascript在Javascript中将字符串对象转换为整数
【发布时间】:2017-04-28 15:32:48
【问题描述】:

我有这个功能:

function validar(e) {
  var xx = 1;
  tecla = (document.all) ? e.keyCode : e.which;     // 2
  if (tecla == 8) return true;                      // 3
  patron = /[A-Za-z\s]/;                            // 4
  te = String.fromCharCode(tecla);                  // 5

  var valorNumerico = Number(te); 
  if (te > 1 && te < 11) {
    alert('Calificación:' + valorNumerico)
  } else {
    alert('La Calificación debe estar entre 2 y 10  - ' + valorNumerico)
  }
}

其目标是捕获用户的输入并验证范围为 2 到 10

但是,告诉我NaN

我试过valorNumerico = parseInt(te);

给我看NaN

我试过valorNumerico = Integer.parseInt(te);

给我看NaN

那么,我怎样才能转换成整数呢?谢谢我在 javascript 中使用了一个函数到 asp.net

【问题讨论】:

  • 你如何声明tetecla 是什么?
  • te 的值是多少?并非每个字符串值都可以转换为数字。您在这里的最终目标是什么?
  • 好像te不包含数字
  • 函数验证器(e) { var xx = 1; tecla = (document.all) ? e.keyCode : e.which; // 2 if (tecla == 8) return true; // 3 位赞助人 = /[A-Za-z\s]/; // 4 te = String.fromCharCode(tecla); // 5 var valorNumeric = Number(te); if (te > 1 && te
  • @David Ortega 更新您的问题,不要添加评论。

标签: javascript string integer


【解决方案1】:

parseInt() 并不总是假设以 10 为底。这可能是其中的一部分。

但我在这里真的怀疑teclate 确实具有您认为的价值观。尝试在您的 parseInt() 调用上方放置一个 console.log() 语句,这样您就可以看到该函数的真正含义。可能会让你大吃一惊。

您尤其应该阅读这个相关问题:

JavaScript KeyCode vs CharCode

这告诉你这一行:

tecla = (document.all) ? e.keyCode : e.which; 

应该看起来更像这样:

tecla  = (typeof e.which == "number") ? e.which : e.keyCode

但即便如此,对于某些较旧的浏览器和不可打印字符,或者如果您使用的不是 keypress 甚至是 keyupkeydown,即使这样也可能无法生成您想要的内容。

【讨论】:

    【解决方案2】:

    据我了解:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/fromCharCode

    String.fromCharCode() 将一个数字(或一系列数字)转换为它们对应的 unicode 值序列;因此,无论您传递给fromCharCode() 的任何参数实际上都不应该返回一个您可以解析为整数的字符串。换句话说,当给定一个数字时,fromCharCode() 将返回不是数值的东西。

    我会按照其他人的建议和console.log(tecla)console.log(e) 来看看你真正处理的是什么价值观。

    如果你真的在监听 keyup 或 keydown 事件,那么 String.fromCharCode(e.keyCode) 应该可以被 parseInt() 解析。例如,如果e.keycode 返回值0x31,您应该能够将其解析为带有fromCharCode() 的字符串和带有parseInt() 的整数。

    但是,当您不太确定要处理的数据是什么,或者事情看起来很奇怪时,记录始终是您的最佳选择。

    【讨论】:

    • 换句话说我不能为我的海豚使用这个功能。?那么我如何实现一个函数来验证用户在文本框中输入的范围。谢谢
    • 你完全可以使用这个函数来达到你的目的,这取决于你是否传递了有效的数据。 String.fromCharCode(0x31) 将返回“1”,您可以通过 parseInt(1) 获取整数值 1。您需要验证并确认您实际上传递了与 String.fromCharCode() 的数字对应的有效键码
    【解决方案3】:

    问题似乎出在以下几行:

    1) te = String.fromCharCode(tecla); // 5
    2) var valorNumerico = Number(te);
    

    查看您的代码 line1 似乎表明 tecla 是一个数字,它也应该是 fromCharCode() 函数需要一个数字并返回一个字符; 所以假设 tecla 是 65,所以 line1 将返回 'A' 将分配给 te 变量。

    现在在第 2 行中,您尝试将字符转换为数字,因为(例如 A)它不能转换为数字,您会得到 NaN。

    希望对你有帮助!

    【讨论】:

      猜你喜欢
      • 2017-09-29
      • 1970-01-01
      • 2020-07-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-09
      • 2023-03-19
      相关资源
      最近更新 更多