0

私の質問は、ボタンをクリックしたときに表示されるのはこの「価格表」だけで、変数を含む他のすべての行が省略される理由です。

function showmessage() {
    var sendcost, totalcost;
    if (document.pricelist.total.value<11) {
        sendcost = 3; 
    }   
    else {
        sendcost = 2; 
    }   
    if (document.pricelist.option.checked) {
        sendcost = parseInt(document.pricelist.option.value) + parseInt(sendcost);
    }
    totalcost = parseInt(sendcost) + parseInt(document.pricelist.total.value);

    document.write("Pricelist","</br>");
    document.write("Products price: "+document.pricelist.total.value+"</br>");
    document.write("Send fee: "+sendcost+"</br>");
    document.write("Total cost: "+totalcost+"</br>");
}
<form name="pricelist">
Tuna Salad = 4 <input type="checkbox" name="choice" value="4" onchange="checkTotal()" /></br>
Pasta = 13 <input type="checkbox" name="choice" value="13" onchange="checkTotal()" /></br>
Milk = 3 <input type="checkbox" name="choice" value="3" onchange="checkTotal()" /></br>
Chocolate = 2 <input type="checkbox" name="choice" value="2" onchange="checkTotal()" /></br>
Same day delivery<input type="checkbox" name="option" value="5" /></br>
Total: <input type="text" size="2" name="total" value="0"/>
<input type="button" value="Procceed to checkout" onclick='return showmessage();' />
4

3 に答える 3

0

document.writeページの読み込み後に呼び出されると、ページ全体が破棄されるため、pricelistという名前のフォームがなくなるため、がdocument.pricelist.total.value発生Uncaught TypeError: Cannot read property 'total' of undefinedし、スクリプトが途中で終了します。

以外のものを使用することをお勧めしますdocument.write

document.pricelist.total.valueただし、現在のエラーを回避するには、変数が破棄される前に、の値を変数に保存するだけです。

var value = document.pricelist.total.value;
document.write("Pricelist","</br>");
document.write("Products price: "+value+"</br>");
document.write("Send fee: "+sendcost+"</br>");
document.write("Total cost: "+totalcost+"</br>");
于 2012-11-01T23:01:01.770 に答える
0

「ProductsPrice:」を表示した後に機能しなくなるのは、次の2行のコードの構文エラーが原因です。

アップデート:

document.write("Send fee: "+sendcost+"</br>);
document.write("Total cost: "+totalcost+"</br>;

に:

document.write("Send fee: "+sendcost+"</br>");
document.write("Total cost: "+totalcost+"</br>");

また、更新します:

document.write("Pricelist","</br>");

に:

document.write("Pricelist</br>");

次に、不正な形式の</br>タグを修正して<br />

于 2012-11-01T22:40:12.103 に答える
0

デバッグにはFirebugを使用してください。Firefox用の本当に優れたツール http://getfirebug.com/

ChromeとInternetExplorerには、非常に優れた内部デバッグツールもあります。F12キーを押して開きます。

これらのツールを使用すると、視覚的にデバッグできます。各スクリプトコマンドをステップ実行して、何が起こるかを監視できます。

于 2012-11-01T23:07:21.347 に答える