0

SMATYのテンプレートエンジンを使ってECサイトを構築しています。viewCart ページで、javascript を使用して数量に応じて個々の商品の価格を計算しましたが、合計値を計算できませんでした。

{foreach name = feach item = k from = $res key = ind}

   <!-- PRODUCT INFO -->

   <div class="cleaner_h20">&nbsp;</div>

   <div id="iteminfo">
   <span class="styleblue">{$k->brand} {$k->model}</span>
    </div>
     <div id="itemsmall">
     Rs. <span id="pro_prc{$ind}">{$k->price}</span>
   </div>
    <div id="itemsmall">


 <select id="qty{$ind}" name="qty" onchange="change_price('{$ind}')">

       <option name="1" value="1">1</option>
       <option name="2" value="2">2</option>
       <option name="3" value="3">3</option>
       <option name="4" value="4">4</option>
  </select>


     </div>
    <div id="itemsmall_long"> <a href="#"><img src="{$path_css}images/remove.png" /></a>
    </div>
    <div id="itemsmall">
    Rs.<span id="prc{$ind}">  {$k->price}</span>
   </div>

    <div class="cleaner_h20">&nbsp;</div>


       {literal}
       <script>
        function change_price(ind)
        {

         var y=document.getElementById("pro_prc"+ind).innerHTML;
         //alert(y);
        var z=document.getElementById("qty"+ind).value;
           // alert(z);
         x=y*z;
        // alert(x);
         document.getElementById("prc"+ind).innerHTML=x;

        }
       </script>     
       {/literal}

{/foreach}

上記のアラートには NaN が表示されます。私は混乱しています 。私の論理が正しくないかもしれません。

4

3 に答える 3

0

コード内のyとzはStringを表すため、:var y = parseInt(y);var z = parseInt(z);のように実行する必要があります。

于 2012-06-02T07:17:05.290 に答える
0

parseInt または parseFloat を使用して、文字列を乗算する前に整数に変換します。

function change_price(ind)
{
   var y=parseInt(document.getElementById("pro_prc"+ind).innerHTML);
   //alert(y);
   var z=parseInt(document.getElementById("qty"+ind).value);
   // alert(z);
   x=y*z;
   // alert(x);
   document.getElementById("prc"+ind).innerHTML=x;
}
于 2012-06-02T07:15:54.057 に答える
0

文字列を解析する必要があると思います。

var y=document.getElementById("pro_prc"+ind).innerHTML
var y1=parseFloat(y).toFixed(4);
var z=document.getElementById("qty"+ind).value;
var z1=parseFloat(z).toFixed(4);
于 2012-06-02T07:16:09.140 に答える