2

バーコードをスキャンしたときに商品の価格を表示するアプリを作成しています。基本的に、バーコードがスキャンされると、テキストフィールドに入力され、バーコードがどのバーコードであるかに基づいて、テキストエリアにjavascriptを介して価格が入力されます。私はこれを機能させることができましたが、後で大量のコードを調べることから私を救うために特定の変数を作成することができないようです。

これが私のJavaScriptです:

function showPrice() {
    var userInput = document.getElementById('barcode').value;
    var price = document.getElementById('textarea').innerHTML;
    if (userInput === "783466209834") {
        price = "16.99";
    } else {
        price = "Not a valid barcode";
    }
}

そして、これが私のHTMLです。

<input type="text" name="text" class="textinput" id="barcode">
<input type="button" onclick="showPrice()" value="Submit">
<textarea name="" cols="" rows="" readonly="readonly" id="textarea"></textarea>

現在、コードは機能していませんが、削除すると

var price = document.getElementById('textarea').innerHTML;  

ifステートメントの「price」をそれぞれ置き換えると機能します。この価格変数を作成できない理由がわかりません。

4

5 に答える 5

3

テキストエリアの値を操作したい場合は、document.getElementById('textarea').valueではなくにアクセスする必要がありますinnerHTML

そして、はい、他の人が指摘したように、値ではなく要素を参照するように変数を設定したいと考えています。次に、要素の値を取得または設定できます。

于 2013-03-01T21:29:16.267 に答える
3

変数への参照を保存するのではなく、変数としてを保存しているためです。innerHTML

var textarea = document.getElementById('textarea');などに変更textarea.innerHTML = "16.99"します。

于 2013-03-01T21:26:06.897 に答える
3

の innerHTML を取得textareaし、変数に格納していますprice。代わりに、要素を変数に格納し、呼び出しprice.innerHTMLて結果を DOM に配置するだけで済みます。そのような:

function showPrice() {
    var userInput = document.getElementById('barcode').value;
    var price = document.getElementById('textarea');
    if (userInput === "783466209834") {
        price.innerHTML = "16.99";
    } else {
        price.innerHTML = "Not a valid barcode";
    }
}

EDIT:talemynが正しく指摘しているように、sの内容を変更するの.valueではなく、使用する必要があります。同じことをしているように見えるかもしれませんが、 の使用にはわずかな欠点があります。.innerHTMLtextarea.innerHTML

于 2013-03-01T21:26:29.160 に答える
-1

値を割り当ててからprice上書きするべきではありません...それがあなたのコードが行っていることです。innerHTML に保存場所を作成していると思いますか?

代わりに、変数を作成するだけです。

var price;

実行したとおりにコードを実行します。そして結果をページに入れます

document.getElementById("text area").innerHTML = price;
于 2013-03-01T21:26:42.037 に答える
-2

「価格」変数を 2 つの別々のもので 2 回設定しています。実際に DOM を変更しているわけではありません。代わりに次を使用します。

var price = document.getElementById('textarea');
if (userInput === "783466209834") {
    price.innerHTML = "16.99";
} else {
    price.innerHTML = "Not a valid barcode";
}
于 2013-03-01T21:26:58.740 に答える