2013-08-05 34 views
6

Trong mã bên dưới, tôi đang cố gắng gọi valueAsNumber nhưng tôi chỉ nhận được một NaN trả về. Khi tôi sử dụng parseInt tôi nhận được kết quả mong đợi. Tại sao đây?Tại sao 'valueAsNumber' trả lại NaN dưới dạng giá trị?

<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>                                                  

Trả lời

10

sự mong đợi của bạn là hợp lý xem xét các tên thuộc tính, nhưng đọc thực tế specs/documentation:

Thuộc tính valueAsNumber IDL đại diện cho giá trị của nguyên tố này, hiểu là một số.

Khi nhận được, nếu thuộc tính valueAsNumber không áp dụng, như được định nghĩa cho trạng thái hiện tại của thuộc tính loại phần tử đầu vào, sau đó trả lại giá trị Không phải số (NaN).

Here's a table danh sách đó là type s áp dụng cho valueAsNumber. Đó là:

Date and Time,
ngày,
Tháng,
Tuần,
Time
ngày địa phương và thời gian,
Số
Phạm vi

Vâng đó là khá kỳ lạ quyết định API

+0

tức là vẫn trả về NaN. đã thử loại = số trong cửa sổ 10. – VISHMAY

3

Bạn cần phải thiết lập các type của bạn input-number:

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

Ngoài ra, nếu giá trị là rỗng hoặc không phải số, nó sẽ trở NaN.

+0

Xem ra, điều này vẫn không hoạt động trong cạnh: https://stackoverflow.com/questions/34251265/on-an-inputtype-number-ed ge-always-returns-nan-for-valueasnumber –

Các vấn đề liên quan