3

我正在使用一个 javascript 函数,该函数使用 YES 或 NO 的 RadioButtons 获取一些问题的值。为了得到一个问题(Q1)的价值,我做了这样的事情:

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

我必须对每个问题都这样做,所以代码变得很长。所以我试图制作一个函数或一个循环,其中问题的名称正在改变。我唯一的问题是我不知道如何在document.form1.VARIABLE.value. 我已经尝试了一些方法,但没有奏效。

谁能帮我这个?

非常感谢!

4

3 回答 3

2

采用

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

并给出单选按钮名称,que_1 que_2这样您就可以i使用字符串连接来更改它

于 2012-05-02T17:10:58.750 回答
2

这是一个循环,它将遍历您的单选按钮并使用这些值构建一个数组。在代码和示例中,它设置为测试三个问题(名为 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 回答
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 回答