0

我是 JavaScript 新手,一直在从JavaScriptKit修改一个不安全的 JavaScript 测验,主要是在 JSLint 和 Firebug 中整理它,并试图让它在 Safari(特别是 iPad)上运行。该测验在 IE9、Chrome 和 Firefox 中运行良好。

三天后,在论坛的帮助下,问题已经缩小到一个 JavaScript 方法parse被用作变量!Safari JavaScript 调试返回

ReferenceError:找不到变量解析

这是有道理的(尽管为什么其他浏览器似乎并不关心这很奇怪)。此处提供了带有一些警报的当前版本,错误发生在results.htm页面上。

该功能如下,我不知道如何修复它。我更改parseparced其他名称,认为它只需要是一个变量,但这使得它在所有浏览器中都失败了!我实际上并不了解文档如何将信息写入文本区域,只是它可以在三个浏览器中工作,就像魔术一样!任何帮助,将不胜感激。

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);
}

4

2 回答 2

0

问题在于...

results[n].charAt(1) 

位置 1 实际上是 "=" 而不是 "q"

正确的代码应该是...

if (results[n].charAt(0)=='q'){

我知道这是一篇旧帖子,但我今天实际上遇到了同样的问题。

于 2013-04-02T19:52:20.453 回答
0

您尚未parse在任何地方声明,这可能会导致某些浏览器出现随机问题。我会改变:

var e, n, results, temp, totalquestions;

var e, n, results, temp, totalquestions, parse;
于 2012-05-01T19:11:26.460 回答