2017-08-12 43 views
0

我使用的功能,採取必要的輸入來計算的距離。JS .value的錯誤

function dist(){ 
x.value = u.value*t.value + (a.value*Math.pow(t,2))/2; 
} 

開發控制檯警告說,「無法讀取空的財產‘價值’」。所以我給輸入x分配了一個文本值,然後給了一個數值,但仍然沒有工作。引用的論文控制檯的兩個點的問題:

x.value = u.value*t.value + (a.value*Math.pow(t.value,2))/2; 

和HTML行:

Distance : <input id="dist" value placeholder = "Enter distance"> 
      <input type=button id="fd" onclick="dist()" value="Find"> 

這裏有什麼錯?

P.S:變量賦值:

var u = document.getElementById("iv"); 
var v = document.getElementById("fv"); 
var a = document.getElementById("acc"); 
var x = document.getElementById("dist"); 
var t = document.getElementById("time"); 
+0

這意味着,當你試圖將他們分配到的變量,這些元素不存在。請顯示[mcve]。 – JJJ

+0

屬性類型=「文本」是從輸入標籤 –

+0

@PankajMandale「文本」缺少的是默認類型。 – JJJ

回答

0

原因可能是DOM之前您正在執行JS已準備就緒。

var u = document.getElementById("iv"); 
var v = document.getElementById("fv"); 
var a = document.getElementById("acc"); 
var x = document.getElementById("dist"); 
var t = document.getElementById("time"); 

變量賦值u v x a t在DOM準備好之前完成,元素在那個時候不可用。這就是爲什麼你會收到錯誤。

的方法之一是,嘗試的HTML代碼的底部移動你的所有腳本。

或移動內部dist()功能的那些行

function dist(){ 
    var u = document.getElementById("iv"); 
    var v = document.getElementById("fv"); 
    var a = document.getElementById("acc"); 
    var x = document.getElementById("dist"); 
    var t = document.getElementById("time"); 

    x.value = u.value*t.value + (a.value*Math.pow(t,2))/2; 
} 

更新:

在做從投入要素的數學運算只是要小心,因爲輸入值是字符串,則需要使用其轉換爲NumberNumber object

x.value = Number(u.value)*Number(t.value) + (Number(a.value)*Math.pow(Number(t.value),2))/2; 

此行還有一個錯誤Math.pow(t,2),應該是Math.pow(t.value,2)

注:使用Number對象或parseInt()時,因爲他們將返回NaN無效號碼,如Number('2abc')將返回NaN小心。對於檢查NaN使用isNaN()

+0

當我嘗試這個,或者當我宣佈和分配裏面'$(文件)。就緒()'函數,甚至當我變數移動腳本到頁面底部返回NaN。 –

+0

'Number(u.value)'將返回'NaN',如果它不是一個合適的數字。爲了檢查'NaN'使用'isNaN()'方法來檢查 –

+0

謝謝我的問題得到了@SatvikA歡迎您使用號碼() –