3

I am working with a javascript function which takes the value of some questions using RadioButtons of YES or NO. To get the value of one question(Q1) I do something like this:

for (i=0; i<document.form1.Q1.length; i++){
   if(document.form1.Q1[i].checked)
       Array[0] = document.form1.Q1[i].value;
}

I have to do this for every question, so the code is getting very long. So I am trying to make a function or a loop in which the name of the question is changing. My only problem is that i dont know how to use a Variable on document.form1.VARIABLE.value. I already tried some ways but didnt work.

Can anyone help me with this?

Thanks a lot!

4

3 に答える 3

2

これは、ラジオ ボタンをトラバースし、値で配列を作成するループです。コードと例では、3 つの質問 (Q1、Q2、および Q3 という名前) をテストするように設定されています。完了すると、配列「aux」にはチェックされた値のリストが含まれます。

var max = 3;
var aux = new Array();
function getCheckedValue(groupName) {
    var radios = document.getElementsByName(groupName);
    for (i = 0; i < radios.length; i++) {
        if (radios[i].checked) {
            return radios[i].value;
        }
    }
    return null;
}
function check() {
    for(var i=1;i<=max;i++) {
        //console.log(i,getCheckedValue('Q'+i));
        aux[i-1] = getCheckedValue('Q'+i);
    }
    console.log(aux);
}

jsFiddle の

于 2012-05-02T17:31:36.503 に答える
2

使用する

document.forms['form-name']['radio-button-name'].value

文字列連結que_1 que_2を使用して変更できるように、ラジオボタンに次のような名前を付けますi

于 2012-05-02T17:10:58.750 に答える
1

ラジオボタンを使用せず、代わりにチェックボックスを使用してください (チェックされている場合ははい、チェックされていない場合はいいえ)。次に、チェックボックスを自由に繰り返し、チェックされているものとチェックされていないものを確認できます。打ち負かされた OP には、「はい」、「いいえ」、「無回答」の違いが必要です。


いくつかの広範なコーディング(私のJSは錆びています)の後、次のことを思いつきました:

<form name=form1 id=form1 action="index.php">
    <p>Question 1</p>
    <label><input type="radio" name="Q1" value="yes">Yes</label>
    <label><input type="radio" name="Q1" value="no">No</label>

    <p>Question 2</p>
    <label><input type="radio" name="Q2" value="yes">Yes</label>
    <label><input type="radio" name="Q2" value="no">No</label>

    <p>Question 3</p>
    <label><input type="radio" name="Q3" value="yes">Yes</label>
    <label><input type="radio" name="Q3" value="no">No</label>

    <button id="go">Go!</button>
</form>

<script type="text/javascript">
    check = function (e) {
        e.preventDefault(); //Don't submit!
        var result = [];
        var form = document.getElementById("form1");
        for (var i = 1; typeof(form["Q" + i]) != "undefined"; i++) {
            for (var j = 0; j < form["Q" + i].length; j++) {
                if (form["Q" + i][j].checked) {
                    result.push(form["Q" + i][j].name + " " + form["Q" + i][j].value);
                }
            }
        }
        console.log(result);
    }

    button = document.getElementById("go");
    button.onclick = check;

</script>

「Go!」をクリックするとトリガーされます。ボタン。


ポイントは、「Q」と「i」の文字列連結を使用して、「Q1」「Q2」などに到達することです。

于 2012-05-02T16:54:58.567 に答える