我的页面上有4个下拉列表。我试图输出一条消息,然后点击提交按钮打开一个新页面。这是基于每个下拉列表的单个值为true的条件。每个检查列表的所有选项都为true。例如,50p=true,在下一个框中,每个列表的£2等于true,依此类推。
这是其中一个盒子的例子。其他3个框具有完全相同的名称,但只是具有不同的真值和假值
<input name="button" type="submit" class="main" id="button" value="Submit" onclick="submit()" />
<select name="select_box" size="1" class="main" id="select_box">
<option value="true">50p</option>
<option value="false">1p</option>
<option value="false" selected="selected">20p</option>
<option value="false">£2</option>
</select>
这就是我尝试分配变量的地方。我的逻辑是,如果我可以通过获取下拉列表的id将变量分配给它们的名称,我可以应用一个if语句,根据onclick函数为我提供所需的结果,因为选择框中有true和false值?当我运行这段代码时,无论选项如何,Javascript似乎只会确认并调用警报框,就好像那里没有其他代码一样。
var a=document.getElementById("select_box");
var b=document.getElementById("select_box2");
var c=document.getElementById("select_box3");
var d=document.getElementById("select_box4");
object.onclick=submit
if (a=true,b=true,c=true,d=true)
{
alert("Correct you have won press OK for your Reward!")
document.open("Reward.html");
}
else
{
alert("Not right Please try again!");
}
此外,我如何应用上述提交按钮来处理这些报表
我为代码前半部分顶部的糟糕编辑道歉,我不太确定如何编辑,所以其余的单词显示
在您的代码中,a
持有实际的select元素,而您确实希望它持有select元素的当前值。所以改变
var a = document.getElementById("select_box");
到此:
var a = document.getElementById("select_box").value;
这将指定a
为相关下拉列表的值。只要确保你修复了你的比较:
if (a=true
应该是
if (a === 'true'
还要注意,将下拉列表的值设置为正确或错误
<option value="true">50p</option>
<option value="false">1p</option>
<option value="false" selected="selected">20p</option>
<option value="false">£2</option>
这将使您的服务器端代码很难处理用户实际选择的内容,因为该表单输入的唯一值将是true或false,如果是false,您将无法知道这三个false值中的哪一个是实际选择的。
你的value
可以是任何东西,正确的用法是<option value="50p">50p</option>
,那么当你使用时
if(document.getElementById('select_box').value=='50p'){警报("已选择50p");}
这将工作
首先,要获得选择框的值,需要执行以下操作:
var selectBox = document.getElementById("select_box");
var a = selectBox.options[selectBox.selectedIndex].value;
接下来,对于if语句,有几点是错误的。首先,您使用的是单等号而不是双等号进行比较。当选择框返回的值是字符串时,您还将它们与布尔值进行比较。最后,不能用逗号分隔条件句。您必须指定AND或or或其他什么。更改if语句,使其更像这样:
if (a == "true" && b == "true" && c == "true" && d == "true")
更新:以下是我认为您正在尝试做的一个示例:
<html>
<head>
<script type="text/JavaScript">
function submit()
{
// fill these in with the values for the correct answers
var correctAnswers = new Array("50p", "50p", "50p", "50p");
for (var i = 1; i <= 4; i++)
{
// if any of the values turn up incorrect, stop right there and go back. No need to check the rest of the values.
if (document.getElementById("select_box"+ i).options[document.getElementById("select_box"+ i).selectedIndex].value != correctAnswers[i-1])
{
alert("Not right, please try again!");
return;
}
}
alert("Corect, you have won! Press OK for your reward!");
document.getElementById("frmMainForm").submit();
}
</script>
</head>
<body>
<form action="Reward.html" method="post" id="frmMainForm">
<select name="select_box1" size="1" class="main" id="select_box">
<option value="50p">50p</option> <!-- use the actual value, not "true" or "false" -->
<option value="1p">1p</option>
<option value="20p" selected="selected">20p</option>
<option value="£2">£2</option>
</select>
<select name="select_box2" size="1" class="main" id="select_box">
<option value="50p">50p</option>
<option value="1p">1p</option>
<option value="20p" selected="selected">20p</option>
<option value="£2">£2</option>
</select>
<select name="select_box3" size="1" class="main" id="select_box">
<option value="50p">50p</option>
<option value="1p">1p</option>
<option value="20p" selected="selected">20p</option>
<option value="£2">£2</option>
</select>
<select name="select_box4" size="1" class="main" id="select_box">
<option value="50p">50p</option>
<option value="1p">1p</option>
<option value="20p" selected="selected">20p</option>
<option value="£2">£2</option>
</select>
<input type="button" class="main" id="btnSubmit" onclick="submit()" value="Submit" />
</form>
</body>
</html>
不确定这有多重要,但请记住,任何从浏览器窗口查看源代码的人都可以得到正确的答案。如果这对您来说是个问题,那么您应该将表单提交给服务器端(例如PHP、ASP、JSP等)脚本,以便为您检查值。