私は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に文字通り数字+数字を印刷し、代わりに文字列のような数字を扱います。
入力要素の値は、type = "number"であっても常に_文字列であることに注意してください。文字列が '+'演算子で連結されているので、自動式変換ではこれが処理されますが、文字列で増分をしようとすると問題が発生します。入力値を数値に変換してから計算します。 – Teemu
あなたの質問は何ですか? – pattyd
Teemuは私の問題を抱えています:今は私のコードは、私がImportototaleにつけたものが追加された番号ではなく文字通り番号+番号であるため動作していません。では、数字の文字列を変換する正しいコードは何でしょうか? – TheMerovingian