2016-07-12 4 views
-2

私はreadonly入力(値はjavascriptを介して生成される)から値を取得しようとしており、別の読み取り専用入力に追加してから印刷します。Javascript:innerhtmlに間違った値を書き込む

<input type="number" class="form-control" id="importounitario1" name="importounitario1" style="width:80px;" onchange="CalcolaImportoParziale1()"> 

javascriptのつもりが値をとる読み取り専用入力: ここではHTMLコードです。

<input type="number" class="form-control" id="importoparziale1" name="importoparziale1" style="width:80px;" readonly="true" placeholder="" value=""> 

そしてここ5つの入力フィールドがあるので、Javascriptコードは

function CalcolaImportoParziale1() { 
    if (document.getElementById("da1").value && document.getElementById("a1").value && document.getElementById("importounitario1").value) { 
     var numeroiniziale = document.getElementById("da1").value; 
     var numerofinale = document.getElementById("a1").value; 
     var importounitario = document.getElementById("importounitario1").value; 
     var quantita  = (numerofinale-numeroiniziale) + 1; 
     var importoparziale = importounitario * quantita; 

     document.getElementById("importoparziale1").value  = importoparziale; 
     document.getElementById("importoparziale1").placeholder = importoparziale; 

     if (document.getElementById("importoparziale1").value && document.getElementById("importoparziale2").value && document.getElementById("importoparziale3").value && document.getElementById("importoparziale4").value && document.getElementById("importoparziale5").value) { 
      var importototale = document.getElementById("importoparziale1").value + document.getElementById("importoparziale2").value + document.getElementById("importoparziale3").value + document.getElementById("importoparziale4").value + document.getElementById("importoparziale5").value; 
      document.getElementById("importototalelordo").value   = importototale; 
      document.getElementById("importototalelordo").placeholder = importototale; 
     } 
     else if (document.getElementById("importoparziale1").value && document.getElementById("importoparziale2").value && document.getElementById("importoparziale3").value && document.getElementById("importoparziale4").value) { 
      var importototale = document.getElementById("importoparziale1").value + document.getElementById("importoparziale2").value + document.getElementById("importoparziale3").value + document.getElementById("importoparziale4").value; 
      document.getElementById("importototalelordo").value   = importototale; 
      document.getElementById("importototalelordo").placeholder = importototale; 
     } 
     else if (document.getElementById("importoparziale1").value && document.getElementById("importoparziale2").value && document.getElementById("importoparziale3").value) { 
      var importototale = document.getElementById("importoparziale1").value + document.getElementById("importoparziale2").value + document.getElementById("importoparziale3").value; 
      document.getElementById("importototalelordo").value   = importototale; 
      document.getElementById("importototalelordo").placeholder = importototale; 
     } 
     else if (document.getElementById("importoparziale1").value && document.getElementById("importoparziale2").value) { 
      var importototale = document.getElementById("importoparziale1").value + document.getElementById("importoparziale2").value; 
      document.getElementById("importototalelordo").value   = importototale; 
      document.getElementById("importototalelordo").placeholder = importototale; 
     } 
     else if (document.getElementById("importoparziale1").value) { 
      document.getElementById("importototalelordo").value   = document.getElementById("importoparziale1").value; 
      document.getElementById("importototalelordo").placeholder = document.getElementById("importoparziale1").value; 
     } 

     var quantitaparziale1 = document.getElementById("a1").value - document.getElementById("da1").value; 
     var quantitaparziale2 = document.getElementById("a2").value - document.getElementById("da2").value; 
     var quantitaparziale3 = document.getElementById("a3").value - document.getElementById("da3").value; 
     var quantitaparziale4 = document.getElementById("a4").value - document.getElementById("da4").value; 
     var quantitaparziale5 = document.getElementById("a5").value - document.getElementById("da5").value; 
     var quantitatotale  = quantitaparziale1 + quantitaparziale2 + quantitaparziale3 + quantitaparziale4 + quantitaparziale5; 
     document.getElementById("quantitatotale").value   = quantitatotale; 
     document.getElementById("quantitatotale").placeholder = quantitatotale; 
    } 
} 

だ、 'CalcolaImportoParziale2' のような名前の5つの機能があります。現在、コードはImportoTotaleに文字通り数字+数字を印刷し、代わりに文字列のような数字を扱います。

+1

入力要素の値は、type = "number"であっても常に_文字列であることに注意してください。文字列が '+'演算子で連結されているので、自動式変換ではこれが処理されますが、文字列で増分をしようとすると問題が発生します。入力値を数値に変換してから計算します。 – Teemu

+0

あなたの質問は何ですか? – pattyd

+0

Teemuは私の問題を抱えています:今は私のコードは、私がImportototaleにつけたものが追加された番号ではなく文字通り番号+番号であるため動作していません。では、数字の文字列を変換する正しいコードは何でしょうか? – TheMerovingian

答えて

0

かなり下のあなたの質問は、私はちょうど

が、私は別のものに追加し、(これもJavaScriptで生成された値)読み取り専用入力から値を取得しようとしていることを、文字通り、それに従って立っていません読み取り専用で入力してから印刷してください。

document.getElementById('secondValue').value = document.getElementById('firstValue').value; 
 
document.getElementById("answer").innerHTML =document.getElementById('secondValue').value;
<input id="firstValue" type="text" value="apple" readonly/> 
 
<input id="secondValue" type="text" value="" readonly/> 
 
<div id="answer"></div>

0

彼らと数学を行う前に、番号に入力値を変換します。

Teemoの答えのおかげで私はそれを整理:

Number(var importototale = document.getElementById("importoparziale1").value) 

おかげでみんなと申し訳ありません:Javascriptが文字列として値を取った問題は、私はこのようにそれを使用して、​​機能を使用して解決したので、私の恐ろしいコードのために。

関連する問題