1

計算を行うjavascriptメソッドがあります。最後に、隠しフィールドに保存したいと思います。方法は次のとおりです。

<script>
function getQuantity(){
 var count = document.getElementById('hidden').value;
 var Quantity=new Array();
 var i=0;
 for(i=0; i<count; i++)
 {
    Quantity[i]=document.getElementById(i).value;
 }
var myJSONQuantity = JSON.stringify(Quantity,'');
alert(myJSONQuantity);

document.qForm.getElementById('hdnQuantityArray').value = myJSONQuantity;
alert(document.qForm.getElementById('hdnQuantityArray').value);
}
</script>

ここで確認しましたが、すべて正常に機能しています。最後のアラートは正しい値を出力しています。これは、GETメソッドを使用して送信時にフィールドを送信するためのボタンがあるフォームです。

<form  name="qForm" method="GET" action="CalculateTotal.php">
    <input type="hidden" id="hdnQuantityArray" name="hdnQuantityArray">
    <input type="submit" value="CheckOut" id="CheckOut" name="CheckOut">
</form>

私のクエリ文字列は次のように表示されます。

http://localhost/blazorange/Customer/CalculateTotal.php?hdnQuantityArray=&CheckOut=Submit

hdnQuantityArrayこれにクエリ文字列に値を持たせたい。

PSこのjavascriptメソッドは、同じファイル内の別のフォームの送信ボタンから呼び出されます。そして、このフォームはPHPフォームです。他のフォームの送信ボタンのコードは次のとおりです。

<input type="submit" value=" Total " id="total" onClick="return getQuantity()">

編集:

<table border=1>
    <form id="CartForm">    
        <tr>
            <td>
                <h2> <font color='Grey'>Item Name</font> </h2>
            </td>
            <td>
                        <h2> <font color='Grey'>Item Price</font> </h2>
            </td>
            <td>
                    <h2> <font color='Grey'>Quantity</font> </h2>
            </td>
        </tr>
    <?PHP

        /*     Displaying the total and purchased cart's items    */

            $j=0;
            $temp=new Item();
            while(isset($ItemsArray[$j])) {
        ?>
        <tr>
                        <?PHP

                    if (is_string($ItemsArray[$j])) {
                $temp=unserialize($ItemsArray[$j]);
                 }

                $ItemName=$temp->getItemName();
                $Price=$temp->getPrice();
            ?>

            <td>
                <font color='Black'><?PHP echo $ItemName; ?>
            </td>

            <td>
                <font color='Black'><?PHP echo $Price;  ?></font>
            </td>

            <td>
                <input type="text" id="<?PHP echo $j;?>"/> 
            </td>
            </tr>


        <?PHP $j++; }?>


        <table>
            <input type="button" value=" Total " id="total" onClick="getQuantity()">
            <input type="hidden" value="<?PHP echo $j; ?>" id="hidden">

        </form>
    </table>
4

2 に答える 2

4

document.getElementById('hidden')

する必要があります

document.getElementById('hdnQuantityArray')

投稿したコードには、id が「hidden」の要素はありません。

編集:

CartForm が送信されたときにのみ JS が実行されると言っているのですか? それはページをリロードしますよね?ページがリロードされると、hdnQuantityArray は空です。したがって、qForm を送信すると、ページに空白のフィールドが読み込まれ、JS が再度実行されなかったため、そこには何もありません。そうですか?

于 2012-05-31T20:43:27.197 に答える
0

これを行うべきではありません:

document.getElementById('hdnQuantityArray').value = myJSONQuantity;
alert(document.getElementById('hdnQuantityArray').value);

document.getElementById 呼び出しで不要な「qform」を削除しました。

于 2012-05-31T21:32:22.483 に答える