2011-01-07 10 views
0

入力ボックスから金額を集めて、配列である一定量のボックスにチェックを入れようとしています。Javascript関数は入力ボックスから値を取得せず、配列をループします

これは私がこれまでに得たものであり、それは仕事をdoesntの:S

function checkAmount(ting) { 
var boxes = document.getElementsByTagName("input"); 
for (var i = 0; i < ting.value; i++) { 
    if (boxes[i].name == "vote[]") { 
     boxes[i].checked = true; 
    } 
} 
} 

とIMこれでそれを呼び出す:

uncheckAll(); 
checkAmount(document.getElementsByName(\'ammount\')); 
+0

はすべてあなたの投票入力 "vote []"ですか?何が投票されたのかあなたはどのように知っていますか?私はjQueryを見るのは良い考えだと思う..ループ内の –

+0

は、 'ting.value'ではなく' ting.length'です – JCOC611

答えて

0

checked=checked 

代わりの

を使用してみてください
checked=true 
+0

も、なぜboxes.lengthではなくting.valueを使用しますか? ting.valueがboxes.lengthよりも小さいと想定されている場合は、それをチェックするか、配列外のエラーが発生します。 – jun

+0

checked = "チェックされています"という意味です。 – jun

+0

属性がとりうる唯一の値は 'checked'ですが、DOMプロパティはブール値で、' true'または 'false'をとります。 *変数* 'checked'に設定することを提案しています。これは'未定義 'なので、偽の値です。正味の効果は、これが望むものと正反対の**効果を持つことになります。 – Quentin

2

getElementsByNameは配列を返し、あなたの関数は、単一の要素を期待している、あなたは、このように最初の要素にアクセスする必要があります。

checkAmount(document.getElementsByName(\'ammount\')[0]); 

変更ting.valueをforループでboxes.lengthする:

function checkAmount(ting) { 
var boxes = document.getElementsByTagName("input"); 
for (var i = 0; i < boxes.length; i++) { 
     boxes[i].checked = (boxes[i].name == "vote[]") ; 
    } 
} 
0

これを試してみてください:

boxes.item(i).checked = checked

ごめんないシュールどのようにポストにJavaScriptを挿入するには

0

あなたは本当のコードを投稿していますか? もしそうなら、関数呼び出しで 'amount'のスペルが間違っていることに気づきましたか?

「入力ボックスから金額を集める」という言葉から、私はあなたがテキストボックスに入力された数字になると思いますので、配列に解決されるべき値を持つ数値が必要な関数を呼び出すと思いますフォーム要素オブジェクトの?

var m = document.getElementsByName("amount"); 

mは配列になります。言い換えれば

、あなたがcheckAmount呼び出すときに番号を渡したことを確認した場合、それは良い仕事かもしれません:

checkAmount(documents.forms[0].amount.value) 

か:

checkAmount(documents.getElementsByName("amount")[0].value) 

を投稿する場合、それは大いに役立つだろう実際のHTMLと実際のJavaScriptコードです。

0

投稿したコードには、以前の回答と返信で示されているようにいくつかの問題があります。このように呼び出され

function checkAmount(ting) { 
    var boxes = document.getElementsByTagName("input"); 
    for (var i = 0; i < ting.value && i < boxes.length; i++) { 
     if (boxes[i].name == "vote[]") { 
      boxes[i].checked = true; 
     } 
    } 
} 

uncheckAll(); 
checkAmount(document.getElementsByName(\'ammount\')[0]); 

今、あなたは関係なく、入力フィールドに入力した値とcheckAmountへの呼び出しが動作するはずの境界エラーのうちの配列から安全ではない。このような何かを試してみてください。

+0

こんにちは、私はそれが私に値を与えるが、それでもまだチェックボックスarntチェック –

関連する問題