随机问题以显示下载链接

时间:2011-09-26 15:42:57

标签: javascript jquery html

基本思路是有几个问题,但只有1个问题在页面加载时随机显示。然后,对该问题的任何答案都将显示下载。

问题随机加载,但是当我输入答案时,下载不会显示。我以为我的所有代码都是正确的,但也许有更好的方法可以做到这一点。如果你能帮助我,我会非常感激。

P.S。我已经知道这不是隐藏某些东西的超级安全方式,但它不需要非常安全。

<form id="1">
Enter the 5th word on page 28 to access the download:
<input id="pwd1" name="pwd1" type="text" />
</form>
<form id="2">
Enter the 6th word on page 29 to access the download:
<input id="pwd2" name="pwd2" type="text" />
</form>
<form id="3">
Enter the 4th word on page 30 to access the download:
<input id="pwd3" name="pwd3" type="text" />
</form>
<form id="4">
Enter the 3rd word on page 32 to access the download:
<input id="pwd4" name="pwd4" type="text" />
</form>
<form id="5">
Enter the 5th word on page 33 to access the download:
<input id="pwd5" name="pwd5" type="text" />
</form>
<form id="6">
Enter the 3rd word on page 34 to access the download:
<input id="pwd6" name="pwd6" type="text" />
</form>
<form id="7">
Enter the 5th word on page 35 to access the download:
<input id="pwd7" name="pwd7" type="text" />
</form>
<form id="8">
Enter the 4th word on page 36 to access the download:
<input id="pwd8" name="pwd8" type="text" />
</form>
<form id="9">
Enter the 6th word on page 37 to access the download:
<input id="pwd9" name="pwd9" type="text" />
</form>


<div id="hc" style="display: none;">
<center><a href="sudoku.zip"><img id="download" src="download.png"></a></center>
</div>

<script language="javascript">
var rand = Math.floor(Math.random()*9);
$('form').hide().eq(rand).show();
$('form').keyup(function(){
if($('#pwd1').val() == 'more'){
   $('#hc').show('slow');
}
if($('#pwd2').val() == 'Rectangle'){
   $('#hc').show('slow');
}
if($('#pwd3').val() == 'case'){
   $('#hc').show('slow');
}
if($('#pwd4').val() == 'similarities'){
   $('#hc').show('slow');
}
if($('#pwd5').val() == 'similar'){
   $('#hc').show('slow');
}
if($('#pwd6').val() == 'this'){
   $('#hc').show('slow');
}
if($('#pwd7').val() == 'done'){
   $('#hc').show('slow');
}
if($('#pwd8').val() == 'outside'){
   $('#hc').show('slow');
}
if($('#pwd9').val() == 'completed'){
   $('#hc').show('slow');
}
else{$('#hc').hide();} 
});
</script>

5 个答案:

答案 0 :(得分:2)

只有在显示#pwd9时,您的代码才有效。将您的if更改为else if。或switch

并且不,它根本不安全。这个链接一直都在那里

答案 1 :(得分:1)

这将更加清洁:

var rand = Math.floor(Math.random() * 9),
    words = ['more', 'Rectangle', 'case', 'similarities', 'similar', 'this', 'done', 'outside', 'completed'];
$('form').hide().eq(rand).show();
$('form input').keyup(function() {
    if (this.value === words[rand])
        $('#hc').show('slow');
});

以下是jsFiddle的工作原理。

修改我的words索引错了,现在修好了。

答案 2 :(得分:0)

我认为你在语法中遗漏了一些东西 - 你所有的if语句(第一个都是吧),应该是elseif的。

这真的不是很安全,说实话,可能比“正确”做更多的工作(即动态显示问题,只有一个表单,并且可能做一些事情(几乎所有事情)来使这个更多安全的)。

答案 3 :(得分:0)

我不确定这根本可以奏效。这是应该如何做的:

  1. 服务器端语言(如php)会选择随机问题并在屏幕上打印出一个表单。

  2. 您的表单需要一个提交按钮,按下该按钮后,会将数据发送到服务器。

  3. 服务器端语言将处理数据并决定是否显示链接。

  4. 这是通常的做法+它更安全,答案和链接无法轻易阅读。

答案 4 :(得分:0)

您的问题是您只使用if。对每个else if使用if相对于所有{{1}}而不是最后一个,而不是最后一个。