18

在下面的代码中,我正在尝试调用valueAsNumber,但我只返回了一个 NaN。当我使用时,parseInt我得到了我期望的结果。为什么是这样?

<html>                                                                                                                                                                                                     
<head>                                                                                                                                                                                                     
<title>JavaScript: Demo 1</title>                                                                                                                                                                          
<link rel="stylesheet" type="text/css" href="index.css">                                                                                                                                                   
</head>                                                                                                                                                                                                    

<body>                                                                                                                                                                                                     
<div id="numbers">                                                                                                                                                                                         
  <div id="inputs">                                                                                                                                                                                        
    <form name="inputForm">                                                                                                                                                                                
    <div class="prompt">Number 1: <input name="number1" type="text"></div>                                                                                                                                 
    <div class="prompt">Number 2: <input name="number2" type="text"></div>                                                                                                                                 
    </form>                                                                                                                                                                                                
  </div>                                                                                                                                                                                                   
  <div id="result">                                                                                                                                                                                        
    <div class="prompt">RESULT: <span id="operation_result">&nbsp;</span></div>                                                                                                                            
  </div>                                                                                                                                                                                                   
</div>                                                                                                                                                                                                     
<div id="operations">                                                                                                                                                                                      
<p><a id="add_link" href="#" onClick="add(this)">ADD</a></p>                                                                                                                                               
</div>                                                                                                                                                                                                     

<script type="text/javascript">                                                                                                                                                                            
  function add(linkElement){                                                                                                                                                                               
  // var value1 = parseInt(document.inputForm.number1.value);
  // var value2 = parseInt(document.inputForm.number2.value);

  var value1 = document.inputForm.number1.valueAsNumber;
  var value2 = document.inputForm.number2.valueAsNumber;                                                                                                                                              
    var result = value1 + value1;                                                                                                                                                                          

    document.getElementById('operation_result').innerHTML = result;                                                                                                                                        
  }                                                                                                                                                                                                        
</script>                                                                                                                                                                                                  

</body>                                                                                                                                                                                                    
</html>                                                                                                                                                                                                    
4

3 回答 3

26

考虑到属性名称,您的期望是合理的,但请阅读实际规格/文档

valueAsNumber IDL 属性表示元素的值,解释为数字。

获取时,如果 valueAsNumber 属性不适用,如为输入元素的 type 属性的当前状态定义的那样,则返回 Not-a-Number (NaN) 值。

这是一个列表,type它适用于valueAsNumber。这些是:

  • 日期和时间 ( datetime)(请注意,这type=""在 HTML LS 中现已过时)
  • 日期 ( date)
  • 月 ( month)
  • 周 ( week)
  • 时间 ( time)
  • 本地日期和时间 ( datetime-local)
  • 编号 ( number)
  • 范围 ( range)

请注意type="text",上面的列表中明显不存在,因此即使在时textInput.valueAsNumber也会返回。NaNisNaN( parseInt( textInput.value, 10 ) ) === false

于 2013-08-05T15:55:24.477 回答
7

您必须将您的type设置inputnumber

<input name="number1" type="number">

此外,如果值为空或非数字,它将返回NaN.

于 2013-08-05T15:36:40.367 回答
0

我用演员固定:

 var nOP = Number(document.getElementById("hidNED").value);

在我的情况下,hidNED 的唯一可能内容是 0、1、2、3。
我对 javascript 很陌生,不知道 valueAsNumber,但如果我曾经尝试过的话,我可能已经尝试过了。

于 2021-01-06T11:27:38.293 回答