0

基本上,我想创建一个具有类似测验结构的页面,用户可以从一个问题中选择一个选项,从另一个问题中选择另一个选项。根据每个问题的答案,它需要提醒某个输出。我只有一些 Javascript 的基本知识,所以我使用与使用文本框选择答案相同的理论,但这次我想使用单选按钮。

这是带有单选按钮的页面的 HTML 代码:

<p>
                <strong>1. This is the first question?</strong><br />
                <input type="radio" name="op1" value="anw1">Option 1<br>
                <input type="radio" name="op1" value="anw2">Option 2
            </p>

            <p>
                <strong>2. This is the second question?</strong><br />

                <input type="radio" name="op2" value="anw1">Option 1<br>
                <input type="radio" name="op2" value="anw2">Option 2

            </p>

            <input type='button' value='Get result!' onClick='Submit()' /><br />

然后我现在在 head 标签中有这个功能,如下所示:

function Submit()
  {

var op1 = document.getElementsByName('op1')
var op2 = document.getElementsByName('op2')


if(op1== "anw1" && op2== "anw1")
{
alert ("This would be if both options one were selected")
}

else if (op1== "anw2"&& op2== "anw2")
{
alert ("This would be if the the seconds ones were selected")
}

else
{

alert ("This would be if neither were true")

}

}

但是,我似乎无法开始工作,所以我认为我可能不会以正确的方式进行此操作,尽管我确实希望它设置类似。我可以让其他部分工作,但其他部分都没有。

4

1 回答 1

3

以下版本将执行您的代码尝试执行的操作:

function Submit() {    
    var op1= document.getElementsByName('op1');
    var op2= document.getElementsByName('op2');

    if (op1[0].checked && op2[0].checked) {
        alert("This would be if both options one were selected");
    } else if (op1[1].checked && op2[1].checked) {
        alert("This would be if the the seconds ones were selected");
    } else {    
        alert("This would be if neither were true");
    }    
}

演示:http: //jsfiddle.net/Hy9Nw/1

getElementsByName()函数返回一个列表(实际上是一个HTMLCollection),而不是单个元素,因此您不能op1== "anw1"像在代码中那样进行比较。即使它是一个单一的元素,你也需要说op1.value == "anw1".

op1要访问由您返回的列表中的各个项目,getElementsByName()您可以使用数组语法 with ,并使用-which 返回或op1[0]测试是否检查它。op1[0].checkedtruefalse

于 2013-06-16T10:41:16.263 回答