-1

これらすべてをload()bodyイベント内に配置して、ページがレンダリングされ、DOMオブジェクトが作成された後にロードされるようにする必要がありますか?(機能させるには、.valueではなく.innerhtmlを使用する必要があることがわかりました。)その場合、どのように...

(*これはごみのコードであることはわかっていますが、前回の試行よりも良く、次の試行よりも悪いです。これに戻る時間ができたら、内部関数を備えたリテラルコンストラクターを使用して再作成します。このJavascriptの機能をさらに強化します。私が持っているバックエンドのphpは、セキュリティとチェックを処理します)

<script type="text/javascript">

//To get the price of a product applying discount
function getPrice(location,quantity)
{
    //Get the product choice
    var e = document.getElementById("productList["+location+"]");
    var productSelected = e.options[e.selectedIndex].value;

    //TODO: Determine discounts based on product choice
    switch(productSelected)
    {
        case '0':
            return 0;
        case '1':
            return 10;
        case '2':
            return 15;
    }
    return null;
}

//To update product only
function updateProduct(location)
{
    updateRow(location,document.getElementById("quantity["+location+"]").value);
}

//To update only that row
function updateRow(location,quantity)
{
    //Check Quantity is a valid Number and also not a float or negative
    if (!isNaN(quantity) && parseFloat(quantity) && isFinite(quantity) && (quantity >= 0)) {
        quantity = Math.floor(quantity);
    } else {
        quantity = 0;
    };

    //Update the quantity input field to whatever quantity is - Investigate later!
    document.getElementById("quantity["+location+"]").value = quantity;

    //Store old Price for changing total
    var oldTotal = document.getElementById("totalPrice").innerHTML;
    var oldLinePrice = document.getElementById("linePrice["+location+"]").innerHTML;

    //Calculate and Store Prices to adjust the total
    var productPrice = getPrice(location,quantity).toFixed(2);
    var newLinePrice = (quantity*productPrice).toFixed(2);

    //Apply  Updates
    document.getElementById("unitPrice["+location+"]").innerHTML = productPrice;
    document.getElementById("linePrice["+location+"]").innerHTML = newLinePrice;
    document.getElementById("totalPrice").innerHTML = (oldTotal-oldLinePrice+parseFloat(newLinePrice)).toFixed(2);
}
</script>
4

2 に答える 2

1

getElementロード関数には、呼び出し、または要素を取得する関数への呼び出しのみを配置する必要があります。

于 2013-03-05T12:58:03.583 に答える
-3

可能ですが、それでは、最初に読み込まれる.htmlコーディングの一部でjsコードの作業を開始するのが遅れる可能性があります。また、コードが必要以上にインデントされるため、読みやすさの問題が発生します。

于 2013-03-05T13:13:00.160 に答える