1
 window.onload = function(){
      cds = document.getElementsByName( "cd[]" );
      for( var i = 0; i < cds.length; i++ ){
          cds[i].addEventListener("change", addCDToCart, false );
      }
 } 

 /**
   * this function is called
   * when a CD checkbox is selected
   */
  var addCDToCart = function(){
      //get total cost textbox value
      var txtTotal = $("total");
       // loop through all the checkboxes
       for( var i = 0; i < cds.length; i++ ){
           if( cds[i].checked == true ){
               var nextCD = parseFloat(cds[i].title );
               total = ((total) + (nextCD));
           }
       }
       txtTotal.value = total.toString();
       alert( total.toString() );
  }

上記のコードを使用して、配列内のすべてのチェックボックスをチェックしました。選択したすべてのチェックボックスのすべての価格を合計したかったのです。問題は、価格がvalue属性ではなくtitle属性に格納されることです。上記のコードを使用してtitle属性から8.20と12.70の価格の2つのチェックボックスをチェックして合計しようとしましたが、次のように表示されます。

[object HTMLinputElement]8.212.7

私の割り当てでは、HTMLコードを変更することは想定されていません。以下に、HTMLコードの一部を示します。

<div class='item'>
        <span class='CDTitle'>Where is the Love</span>
        <span class='CDYear'>2000</span>
        <span class='catDesc'>Rap</span>
        <span class='CDPrice'>12.70</span>
        <span class='chosen'><input type='checkbox' name='cd[]' value='974' title='12.70' /></span>
</div>
<div class='item'>
        <span class='CDTitle'>White Ladder</span>
        <span class='CDYear'>2000</span>
        <span class='catDesc'>Rock/Pop</span>
        <span class='CDPrice'>8.20</span>
        <span class='chosen'><input type='checkbox' name='cd[]' value='975' title='8.20' /></span>
</div>

この問題を解決するためのヒントはありますか?ありがとう!

4

1 に答える 1

1

あなたはtitle正しく得ています。

total問題は、変数(質問には表示されていません)の初期化にあるようHTMLInputElementです。これは、数値の文字列連結を引き起こしているように見えます。

おそらく、実際のコードtotalでは、変数を要素txtTotalを保持する。と混同しています。input

于 2013-03-14T01:54:44.117 に答える