输入值是字符串而不是数字

时间:2015-01-08 21:36:34

标签: javascript html

当我在输入中添加一个数字时,它不会改变保持在5的值,当我进入控制台并键入uw.value时,我得到“6”而不是6,我在输入中输入网络如何获得一个数字而不是一个字符串?

<form>
    <input type="number" id="wakken" type="number" value=5><br>
    <input max="30" min="0" name="ijsberen" placeholder="Ijsberen" id="ijsberen" type="number" value= "5"><br>
    <input max="30" min="0" name="wakken" placeholder="Penguins" id="penguins" type="number" value= 0><br>
    <input type="button" value="submit" onclick="check()">
</form>      
 var uw = document.getElementById("wakken")
 var ui = document.getElementById("ijsberen")
 var up = document.getElementById("penguins")

4 个答案:

答案 0 :(得分:7)

结帐HTMLInputElement.valueAsNumber

  

元素的值,按顺序解释为以下之一:

     
      
  1. 时间值
  2.   
  3. 一个数字
  4.   
  5. 如果无法转换,则为null
  6.   

var testInput = document.getElementById("test-input");

function handleInput(e){
  var value = this.valueAsNumber;
  console.log("type: %s, value: %o", typeof value, value);  
}

testInput.addEventListener("input", handleInput);
  
handleInput.call(testInput);
<input type="number" id="test-input" type="number" value=5>

对于非数字或非有限数字,这将返回NaN

答案 1 :(得分:4)

由于输入 HTMLElement.value会返回“字符串” ....

<强> jsbin demo

使用

"String" number转换为Number
parseInt(value, 10);  // for (whole) integer numbers
parseFloat(value);    // for (point) floated numbers
Number(value);        // to Number Object

或只是在值之前添加unary +

+value; // instead of parseInt()

要完全确定您的value是一个数字,您也可以这样做:

if(!isNaN(parseFloat(el.value)) && isFinite(el.value)){
   /*true if element's value is a number (or a number in string) */
}

例如:

var uw = document.getElementById("wakken");
var ui = document.getElementById("ijsberen");
var up = document.getElementById("penguins");

function check() {
  // Log Strings
  console.log(uw.value);                  // "5"
  console.log(ui.value);                  // "5"
  console.log(up.value);                  // "0"
  // Log Numbers
  console.log(Number(uw.value));          // 5
  console.log(+uw.value);                 // 5
  console.log(parseInt(ui.value, 10));    // 5
  console.log(parseFloat(up.value));      // 0
}

不要忘记:阅读文档
parseInt()
parseFloat()
Number()
Arithmetic operators

答案 2 :(得分:3)

您可以将值从字符串转换为数字,使用parseFloat(value)表示小数,或parseInt(value)表示整数。

例如:

// uw will refer to the numerical value of the element with id = wakken
var uw = parseInt(document.getElementById("wakken").value);

答案 3 :(得分:0)

var uw = parseInt(document.getElementById("wakken").value, 10); // (value, radix)
if (typeof uw === "number") console.log("works! 'uw' is an int");

log log“有效!'uw'是一个int”,因为我们收集了值并使用parseInt(_: String)将其转换为int。