2017-08-12 4 views
0

私は、必要な入力を取って距離を計算する関数を使用しました。JS .value error

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

Devのコンソールは "がnullのプロパティ '値' を読み込めません" という警告を受けます。だから私は入力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"> 

ここで何が問題になっています参照コンソールが問題として2点を学位論文?

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

属性タイプ= "text"が入力タグにありません –

+0

@PankajMandale "text"がデフォルトタイプです。 – JJJ

答えて

0

理由は、あなたがDOMの準備が整う前にJSを実行していることができました。 DOMの準備ができていると要素は、その時は使用できません前に

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が行われます。だからこそあなたは誤りを抱えている。

1つの方法は、すべてのスクリプトを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; 
} 

更新:

入力値が文字列であり、あなたが使用してNumberに変換する必要があるためだけ気をつけて入力要素から数学的な操作を行いますNumber 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()を使用してNumber('2abc')などの無効な番号がNaNが返されますため、彼らはNaNを返しますので。チェックのためにNaNを使用するisNaN()

+0

これを試すとき、または '$(document).ready()'関数の中で変数を宣言して割り当てるときにNaNを返します。あるいは、スクリプトをページの一番下に移動してもNaNを返します。 –

+0

'Number(u.value)'が適切な数でない場合、 'NaN'を返します。 'NaN'をチェックするには' isNaN() 'メソッドを使用してください。 –

+0

Number()を使用した後に問題が解決しました。 –

関連する問題