我是 JavaScript 新手,一直在从JavaScriptKit修改一个不安全的 JavaScript 测验,主要是在 JSLint 和 Firebug 中整理它,并试图让它在 Safari(特别是 iPad)上运行。该测验在 IE9、Chrome 和 Firefox 中运行良好。
三天后,在论坛的帮助下,问题已经缩小到一个 JavaScript 方法parse
被用作变量!Safari JavaScript 调试返回
ReferenceError:找不到变量解析
这是有道理的(尽管为什么其他浏览器似乎并不关心这很奇怪)。此处提供了带有一些警报的当前版本,错误发生在results.htm
页面上。
该功能如下,我不知道如何修复它。我更改parse
为parced
其他名称,认为它只需要是一个变量,但这使得它在所有浏览器中都失败了!我实际上并不了解文档如何将信息写入文本区域,只是它可以在三个浏览器中工作,就像魔术一样!任何帮助,将不胜感激。
var wrong = 0;
var e, n, results, temp, totalquestions;
for (e = 0; e <= 2; e++) {
document.result[e].value = "";
}
var results = document.cookie.split(";");
alert("var results = " + results);
for (n = 0; n <= results.length - 1; n++) {
alert("results length = " + results.length); <!--last alert in Safari -->
if (results[n].charAt(1) === 'q') {
parse = n;
alert("parse = " + parse);
}
}
var incorrect = results[parse].split("=");
alert("var incorrect = " + incorrect);
incorrect = incorrect[1].split("/");
alert("var incorrect after split = " + incorrect);
if (incorrect[incorrect.length - 1] === 'b') {
incorrect = "";
}
document.result[0].value = totalquestions - incorrect.length + " out of " + totalquestions;
document.result[2].value = ((totalquestions - incorrect.length) / totalquestions * 100).toFixed() + "%";
for (temp = 0; temp < incorrect.length; temp++) {
document.result[1].value += incorrect[temp] + ", ";
alert("the value of temp is " + temp);
}