2012-05-04 5 views
4

フォームに3つのラジオボタンがすべてグループ化されており、クリックされたときにJS関数を実行する必要があります。この関数では、押されたボタンのグループ内のラジオボタンをループします(つまり、グループが 'abc_name' idと呼ばれる場合はfor (var i = 0; i < form.abc_name.length; i++){ }を使用します)。コンストールされた変数名を使用してフォーム上のラジオボタンをループする

同じ方法でラジオボタンのグループを作成したグループ名を使用する方法があるのでしょうか?例えば、関数に 'xyz'を渡した場合、コードはfor (var i = 0; i < form.xyz_name.length; i++){ }である必要があります。ありがとう。

答えて

3

使用square bracket notation

function loopDeLoop (xyz) { 
    var elems = form.elements[xyz + "_name"], 
     len = elems.length, 
     i; 
    for (i=0;i<len;i++){ 
     console.log(elems[i]; 
    } 
} 
+0

タクス、それは私が必要としたものです。 –

0

使用[]プロパティ構文:

function loop(s) { 
    s += '_name'; 
    var inputs = form[s]; 

    for (var i = 0; i < inputs.length; ++i) { 
     ... 
    } 
} 

プロパティキーが可変である場合に必要である - bは「リテラル」であればa.b構文にのみ機能します。

3

実際にはである必要があります。いずれの場合もgetElementsByName()を使用してください。

for (var els = document.getElementsByName(xyz + '_name'), i=0; i<els.length;i++) { 
    // something on els[i] 
} 

あなたが持っているもののために直接対応は以下のようになりますが:

for (var els = form.elements[xyz + "_name"];, i=0; i<els.length;i++) { 
    // something on els[i] 
} 
+0

+1良い点:) – karim79

+0

ありがとう、すぐに再生されます。しかしその提案の背後にある理由は何ですか?私はそれが速いと思いますか? –

関連する問題