基本上,我想创建一个具有类似测验结构的页面,用户可以从一个问题中选择一个选项,从另一个问题中选择另一个选项。根据每个问题的答案,它需要提醒某个输出。我只有一些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")
}
}
然而,我似乎无法开始工作,所以我想我可能不会以正确的方式解决这个问题,尽管我确实希望它类似。我可以让其他部分工作,但没有其他工作。
答案 0 :(得分: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()
function会返回一个列表(实际上是HTMLCollection
),而不是单个元素,因此您不能只在代码中比较op1== "anw1"
。即使它是单个元素,您也需要说op1.value == "anw1"
。
要访问op1
返回的getElementsByName()
列表中的各个项目,您可以将数组语法与op1[0]
一起使用,并使用op1[0].checked
测试是否已对其进行检查 - 返回true
或false
。