2009-07-06 8 views
0

私はチェックボックスの数を数えようとしていますが、2つがチェックされていれば、隠しフィールドのアイテムの価格は£3.00です。価格は1で加算する必要がありますチェックボックスの数を数えて価格に加算する方法

私は解決策を見つけることができないようだ、任意の助けがappriciatedされます。 すべてのチェックボックスにはId = "veg"があります。あなたはreturnで値を返す場合 と隠しフィールドは、関数呼び出しが終了され、任意の次のコードが実行されていない、ID =「MY_ITEM-価格」

 function SetHiddenFieldValue() 
     { 
      var itemPrice = 3; 
      var totalChecked = 0; 
      var veg = document.getElementsById("veg"); 
      for(j=0; j < veg.length;j ++) 
      { 
       if(veg[j].checked) 
       { 
       totalChecked += 1; 
       } 
      } 
    return totalChecked 

     if (totalChecked > 2) { 
     totalChecked = totalChecked -2; 
     totalChecked = totalChecked * 1; 
     itemPrice = itemPrice + totalChecked; 

    } 

     document.getElementById('my-item-price').value = itemPrice; 
} 
+0

NO方法 "document.getElementsById" はありません(複数の要素に注意してください)DOMのID以来のユニークでなければなりません。それは、IDによって複数の要素を取得することができないため、正しいメソッドは "document.getElementById"です。 –

答えて

0

を持っています。だから、関数の最後にreturnを入れてみてください。

さらに、document.getElementByIdは、常に1つの要素をID must be unique in a documentとして返します。したがって、チェックボックスがすべて同じ名前の場合は、おそらくgetElementsByNameという別の方法でチェックボックスを収集する必要があります。

1

これらのIDをすべて指定することはできません。IDは一意である必要があります。

あなたは正しいアイディアを持っています。 機能の途中でreturn totalCheckedが何をしているのかわかりません。

0

すべてのチェックボックスに「veg」というIDがある場合は、IDが一意であることが予想されるため、問題が発生します。親divにチェックボックスを入れてから、document.getElementsByTagName( "option")を使用して値を数えて上に移動してみてください。

0

getElementByIdは、idが動作するように指定されているので、常に1つの要素だけを返します。同じidをいくつかのフィールドに設定するのは誤りです。

のdocument.getElementById( 'myCheckboxes')を使用して、それらすべてを取得し、その後

<div id="myCheckboxes"> ... </div>

をし、getElementsByTagNameの( '入力');:代わりに、コンテナでそれらをラップすることを検討してください。

0

'id'は一意の識別子です。これは1つの要素に対してのみ使用できます。代わりに、 'class'を使用してください。これを試してみてください:

まず、これはあなたのコード内でJS含める:GetElementsByClassName

そして、この操作を行います。

function SetHiddenFieldValue() { 
    var itemPrice = 3; 
    var totalChecked = 0; 
    var veg = document.getElementsByClassName("veg", "input"); 

    for(j=0; j < veg.length;j++) { 
     if(veg[j].checked) { 
      totalChecked += 1; 
     } 
    } 

    if (totalChecked > 2) { 
     totalChecked = totalChecked -2; 
     totalChecked = totalChecked * 1; 
     itemPrice = itemPrice + totalChecked; 
    } 

    document.getElementById('my-item-price').value = itemPrice; 

    return totalChecked; 
} 
関連する問題