2012-04-11 15 views
1
var formobj = document.h1; 
for (var j = 0; j < formobj.elements.length; j++) { 
    if (formobj.elements[j].type == "radiobutton" && formobj.elements[j].checked) { 
     var wholebase = formobj.elements[j].value; 
    } 
} 

後でスクリプトでは、変数はdivの内側のhtmlに設定され、未定義としてラベル付けされます。私のforループに欠陥がありますか?Forループは未定義の変数を返します

+2

どの変数が「変数」ですか? –

+0

@JamesMontagne全体のベース。 – Wilson

+5

@JesusSqueegee 'ラジオボタン'の代わりに 'ラジオ'ではありませんか? – loganfsmyth

答えて

1

、私はあなたがtype == 'radio'をしたいと思います。

-1

wholesale変数は内部スコープ内で定義されています。このスコープを離れると、変数は存在しなくなります。 Javascriptの範囲hereまたはhereについて読む あなたは、このようにコードを変更することができます。何種類radiobuttonありません

var wholebase = null; //<-- declare the variable here 
var formobj = document.h1; 
for (var j = 0; j < formobj.elements.length; j++){ 
     if (formobj.elements[j].type == "radiobutton" && formobj.elements[j].checked){ 
     wholebase = formobj.elements[j].value; 
    } 
} 
+0

内部スコープとは? –

+0

@Ilia Frenkel実際、これは間違っています。 Javascript the Good Parts:残念なことに、JavaScriptは、ブロック構文が示唆しているにもかかわらず、ブロックスコープを持っていません。この混乱はエラーの原因になる可能性があります。簡単なテストケースを試してみましょう。ここではforループに変数を宣言してから、ループを閉じた後にその変数を使用します。それは目に見えるでしょう。 – AlexMA

+0

@AlexMAあなたは絶対に正しいです!昼休みの前に4つの異なる言語でコードを作成すると、それが起こります:-) –

関連する問題