1

我是一名数学老师。我想使用我学校的网站让学生检查他们是否对纸上单独给出的一组测试问题有正确的解决方案。我想给学生一个文本框,他们可以在其中输入他们的解决方案和一个按钮来检查它是否正确。正确的答案将在问题旁边显示一个“正确”图标等。我是一个完整的初学者,但到目前为止我已经做到了:

<script>
function check(z)
{
var ans = new Array
ans[0]="522"
ans[1]="144"

if (document.getElementById('response'+z).value==ans[z])
{
document.getElementById('correct' + z).style.visibility='visible'
document.getElementById('incorrect' + z).style.visibility='hidden'
}
if (document.getElementById('response'+z).value!=ans[z] && document.getElementById('response'+z).value!='')
{
document.getElementById('correct' + z).style.visibility='hidden'
document.getElementById('incorrect' + z).style.visibility='visible'
}
if (document.getElementById('response'+z).value=='')
{
document.getElementById('correct' + z).style.visibility='hidden'
document.getElementById('incorrect' + z).style.visibility='hidden'
}
}
</script>

<img id="correct0"src="correct.jpg"style="visibility:hidden"/>
<img id="incorrect0"src="incorrect.jpg"style="visibility:hidden"/>
1a  
<textarea style="width: 100px; height: 20px;"id="response0"></textarea>
<button style="height: 20px"onclick="check(0)">check</button>
<br></br>

<img id="correct1"src="correct.jpg"style="visibility:hidden"/>
<img id="incorrect1"src="incorrect.jpg"style="visibility:hidden"/>
1b  
<textarea style="width: 100px; height: 20px;"id="response1"></textarea>
<button style="height: 20px"onclick="check(1)">check</button>
<br></br>

这可行,但显然非常笨重(我实际上使用 Excel 电子表格来生成 html 代码)。我的问题是:我可以使用 javascript 本身来生成文本框和按钮吗?我可以混淆正确答案吗(如果学生知道如何查看我的网页来源,我的考试就结束了!)。

非常感谢和最良好的祝愿,

4

2 回答 2

3

理想情况下,您将在服务器端生成并验证解决方案。如果这不是一个选项,请在您的页面中删除对哈希库的引用并针对加密哈希验证答案:

https://code.google.com/p/crypto-js/

您必须在电子表格中生成哈希值——或者在您自己的问题生成页面中使用相同的哈希库。

但要小心!如果您的学生有可能完全熟悉 JavaScript,他们仍然可以轻松打开 JavaScript 控制台并暴力破解它。假设合理的答案往往是数字并且低于 100 万,这非常微不足道......

......还有一个警告。如果您的答案是开放的文本字段,您需要在检查之前“规范化”输入。删除多余的空格、标点符号等。

于 2013-03-25T22:12:09.510 回答
2

JavaScript 中的混淆实际上是不可能的 - 有混淆器,但同时也有去混淆器(取决于您学生的知识,这可能是另一种选择)

编辑:这里是一个混淆器的例子: http ://www.daftlogic.com/projects-online-javascript-obfuscator.htm ,你也可以看看谷歌关闭:http://closure-compiler.appspot .com/home用于缩小和“混淆”但我很伤心,几乎任何事情都可以恢复。

至于生成输入字段和框等,你应该看看 jQuery: http: //jquery.com/ - 一开始可能有点混乱,但它很容易并且对任务有很大帮助像这样。

如果您对该主题有更深入的了解,您可能需要考虑对答案进行服务器端验证(这样您的学生就无法阅读您的代码)。这并不像您想象的那么难,但现在 jQuery 应该可以完成这项工作。

不过我喜欢你的项目,我希望我以前有这样的老师:)

于 2013-03-25T22:04:18.753 回答