繁体   English   中英

如何获取用户输入并将字符串转换为可以在函数中数学使用的整数?

[英]How do i take user input and convert the string into an integer that i can use mathematically in a function?

如何接收用户输入并将字符串转换为可以在函数中数学使用的整数?

编码和尝试构建一个简单的计算器完全陌生。 我不确定自己在做什么错,任何帮助将不胜感激。

    function TLV() 
    {
            var TLVday = Integer.valueOf("getTLVdate");
        var OBday = Integer.valueOf("getOBdate");
        if (TLVday<OBday)
        {
            DD = OBday + 10;
        }
        else
        {
            DD = OBday + 30;
        }
        document.getElementById("TLVoutput").innerHTML=DD;
    }


<form name="myform" id="frm1">
    <table style="border:0;">
    <tr>
    <td>OB Start Day:</td>
    <td><input type="text" id="getOBdate"/></td>
    </tr>
    <tr>
    <td>TLV Start Day: </td>
    <td><input type="text" id="getTLVdate"/></td>
    <td id="TLVoutput"></td>
    </tr>
<button onclick="TLV()">Calculate</button>
    </table>
</form>

这是三种常见方式:

var myNumber = +myString;            // coerce string to number
var myFloat = parseFloat(myString);  // parse as floating point number
var myInt = parseInt(myString, 10);  // parse as a base-10 integer

文档:

+运算符-mdn msdn
parseFloat()方法-mdn msdn
parseInt()方法-mdn msdn

这些技术中的每一个都有自己的怪癖。 由于JavaScript具有动态特性,因此类型转换并不简单。

parseInt()

parseInt()通过从左到右读取数字来产生整数或NaN 如果您的字符串仅包含数字, 并且您正在使用支持ECMAScript 5的浏览器(不支持IE8和更早版本),则非常简单-您将这些数字作为以10为底的数字。在IE8或更早版本中,如果第一个digit是0 ,您将获得八进制数字。 例如, parseInt("010")在现代浏览器中返回10 ,在较旧的浏览器中返回8 要对此进行更正,请始终在第二个参数中指定基数 无论浏览器版本如何, parseInt("010", 10)始终返回10

解析在第一个非数字字符处停止。 因此, parseInt("4 donuts")返回4就像parseInt("4,000") 如果字符串中的第一个字符不是数字或+- ,则将得到NaN ,因此无法解析"$5"

如果字符串以0x则将其视为十六进制(以16为底)。 parseInt("0x10")返回16 如果您明确指定基数为16的基数也一样: parseInt("10", 16)

parseFloat()

parseFloat()parseInt()类似。 区别在于parseFloat()仅适用于以10为底的数字,并且显然会产生浮点数。

加法运算符( +

在JavaScript中,字符串可以用作数字。 当JavaScript构造接受数字并获取其他内容(例如字符串)时,通常会尝试将其“强制”为数字。 我们看到此行为的一种情况是+运算符。 在某些方面,强制比解析更严格-整个字符串必须是数字,而不仅仅是开头,否则它将返回NaN 但是,以另一种方式,它的严格性就不那么严格–空字符串或空格字符串在强制转换为数字时返回0 ,但在解析时返回NaN

除加法运算符外,将字符串强制转换为数字的其他方法包括:

  • 使用Number()构造函数作为函数
  • 将字符串传递到接受数字的方法,例如Math.floor("10")
  • 使用带有算术运算符的字符串:
var string = "10";
var num = string * 1;
var num = string / 1;

ECMAScript规范的第9.3.1节中,获取有关如何将字符串强制转换为数字的完整详细信息。

使用parseInt('value', 10 )将字符串转换为数字

要读取该值,请使用此语法..它根据id选择元素,然后在其上使用value属性获取值。

请记住,这是JavaScript而不是Java

var TLVday = document.getElementById.('getTLVdate').value

将您的代码更改为

var button = document.getElementById('calculate');

button.addEventListener('click', TLV);

function TLV() {
    var TLVday = parseInt(document.getElementById('getTLVdate').value, 10),
        OBday = parseInt(document.getElementById('getOBdate').value, 10),
        DD = 0;
    if (TLVday < OBday) {
        DD = OBday + 10;
    } else {
        DD = OBday + 30;
    }
    document.getElementById("TLVoutput").innerHTML = DD;
}

同时避免内联绑定事件。 始终最好的主意是将您的疑虑分开。

检查小提琴

没有“ Integer”这样的东西,那是Java而不是JavaScript。

要将字符串解析为整数,可以使用parseInt,但是如果您不在乎它是整数还是浮点数,则无需执行任何操作-尝试使用它时,它将自动转换。

但是,您不能仅通过使用其ID访问字段值。 相反,您必须使用DOM-'document.getElementById(“ getTVLdate”)。value'

如果您需要将字符串转换为数字,则可以使用parseInt ,如果需要浮点则可以使用parseFloat

parseInt('84945') ;

您可以给另一个参数parseInt('84945',10) ; 指定基数,在这种情况下为bas 10

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM