【问题标题】:JavaScript code working only in Chrome but not in Firefox, IE, Opera and SafariJavaScript 代码仅适用于 Chrome,但不适用于 Firefox、IE、Opera 和 Safari
【发布时间】:2014-10-30 15:27:25
【问题描述】:

我是编程新手,我在 JavaScript 中尝试了一些东西,它在 Chrome 中运行良好。但它无法在 IE、Firefox、Safari 和 Opera 中运行。我的代码有什么问题吗?

function hp(form) {
    var count1 = 0, count2 = 0, count3 = 0, count4 = 0, count5 = 0, count6 = 0, count7 = 0, count8 = 0, count9 = 0, count10 = 0;
    for (var i = 0; i < 3; i++) {
        if (form.q1[i].checked == true) {
            count1++;
        }
    }
    if (count1 !== 1) {
        alert("Please Answer 1st Question");
        return false;
    }
    for (var i = 0; i < 3; i++) {
        if (form.q2[i].checked == true) {
            count2++;
        }
    }
    if (count2 !== 1) {
        alert("Please Answer 2nd Question");
        return false;
    }
    for (var i = 0; i < 3; i++) {
        if (form.q3[i].checked == true) {
            count3++;
        }
    }
    if (count3 !== 1) {
        alert("Please Answer 3rd Question");
        return false;
    }
    for (var i = 0; i < 3; i++) {
        if (form.q4[i].checked == true) {
            count4++;
        }
    }
    if (count4 !== 1) {
        alert("Please Answer 4th Question");
        return false;
    }
    for (var i = 0; i < 3; i++) {
        if (form.q5[i].checked == true) {
            count5++;
        }
    }
    if (count5 !== 1) {
        alert("Please Answer 5th Question");
        return false;
    }
    for (var i = 0; i < 3; i++) {
        if (form.q6[i].checked == true) {
            count6++;
        }
    }
    if (count6 !== 1) {
        alert("Please Answer 6th Question");
        return false;
    }

    for (var i = 0; i < 3; i++) {
        if (form.q7[i].checked == true) {
            count7++;
        }
    }
    if (count7 !== 1) {
        alert("Please Answer 7th Question");
        return false;
    }
    for (var i = 0; i < 3; i++) {
        if (form.q8[i].checked == true) {
            count8++;
        }
    }
    if (count8 !== 1) {
        alert("Please Answer 8th Question");
        return false;
    }
    for (var i = 0; i < 4; i++) {
        if (form.q9[i].checked == true) {
            count9++;
        }
    }
    if (count9 !== 1) {
        alert("Please Answer 9th Question");
        return false;
    }
    for (var i = 0; i < 3; i++) {
        if (form.q10[i].checked == true) {
            count10++;
        }
    }
    if (count10 !== 1) {
        alert("Please Answer 10th Question");
        return false;
    }
    answer1 = (form.q1.value);
    answer2 = (form.q2.value);
    answer3 = (form.q3.value);
    answer4 = (form.q4.value);
    answer5 = (form.q5.value);
    answer6 = (form.q6.value);
    answer7 = (form.q7.value);
    answer8 = (form.q8.value);
    answer9 = (form.q9.value);
    answer10 = (form.q10.value);
    var a = parseInt(answer1);
    var b = parseInt(answer2);
    var c = parseInt(answer3);
    var d = parseInt(answer4);
    var e = parseInt(answer5);
    var f = parseInt(answer6);
    var g = parseInt(answer7);
    var h = parseInt(answer8);
    var ii = parseInt(answer9);
    var j = parseInt(answer10);
    var c = a + b + c + d + e + f + g + h + ii + j;
    //document.getElementById("result").innerHTML= "The selected values are "+"</br>"+a+"</br>"+b+c+d+e+f+g+h+ii+j+"</br>"+c;
    if (c <= 20) {
        document.getElementById("total").innerHTML = "<h3>" + "ABCD" + "</h3>" + "</br>" + "<IMG ALIGN='center' " + "SRC='images/img.png'>";
    }
    else if ((c > 20) && (c <= 25)) {
        document.getElementById("total").innerHTML = "<h3>" + "ABCD" + "</h3>" + "</br>" + "<IMG ALIGN='center' " + "SRC='images/img.png'>";
    }
    else if ((c > 25) && (c <= 30)) {
        document.getElementById("total").innerHTML = "<h3>" + "ABCD" + "</h3>" + "</br>" + "<IMG ALIGN='center' " + "SRC='images/img.png'>";
    }
    else if ((c > 30) && (c <= 40)) {
        document.getElementById("total").innerHTML = "<h3>" + "ABCD" + "</h3>" + "</br>" + "<IMG ALIGN='center' " + "SRC='images/img.png'>";
    }
    else if ((c > 40) && (c <= 50)) {
        document.getElementById("total").innerHTML = "<h3>" + "ABCD" + "</h3>" + "</br>" + "<IMG ALIGN='center' " + "SRC='images/img.png'>";
    }
    else if ((c > 50) && (c <= 60)) {
        document.getElementById("total").innerHTML = "<h3>" + "ABCD" + "</h3>" + "</br>" + "<IMG ALIGN='center' " + "SRC='images/img.png'>";
    }
    else if ((c > 60) && (c <= 65)) {
        document.getElementById("total").innerHTML = "<h3>" + "ABCD" + "</h3>" + "</br>" + "<IMG ALIGN='center' " + "SRC='images/img.png'>";
    }
    else if ((c > 65) && (c <= 75)) {
        document.getElementById("total").innerHTML = "<h3>" + "ABCD" + "</h3>" + "</br>" + "<IMG ALIGN='center' " + "SRC='images/img.png'>";
    }
    else if ((c > 75) && (c <= 90)) {
        document.getElementById("total").innerHTML = "<h3>" + "ABCD" + "</h3>" + "</br>" + "<IMG ALIGN='center' " + "SRC='images/img.png'>";
    }
    c = 0;
}

我在本地主机上尝试了这段代码,并在 Google Chrome 中得到了我想要的输出。当我在 Firefox 和其他浏览器中尝试相同的页面时,它无法正常工作。只有复选框验证工作正常。 提前致谢

【问题讨论】:

  • 您是否在控制台中遇到任何错误?右键单击 - 检查元素。 firefox用firebug、IE f12等?
  • 控制台给我这个错误 HTML 文档的字符编码没有声明。如果文档包含 US-ASCII 范围之外的字符,则文档将在某些浏览器配置中呈现乱码。页面的字符编码必须在文档或传输协议中声明。
  • @AmarIlindra 那将是 HTML 编码的问题,您将 HTML 编码设置为什么?
  • 基于该错误,您的 HTML 中可能缺少一个标签 - 与您的 JS 无关。确保您的 HTML 具有用于编码的元标记,例如:&lt;meta charset="UTF-8"&gt; ... 在您的 JS 中,请记住“不要重复自己”。无论total 的值如何,您的最后几行都执行完全相同的操作 - 不需要所有那些 else/if 语句。上面,试着想想如何创建一个函数来计算计数并使用单个代码块而不是 10 个运行 for 循环。使用浏览器中的控制台/开发人员工具来调试和跟踪问题。坚持下去! :)
  • 即使在添加后 仍然存在同样的问题,但这次控制台没有错误。还有其他建议吗?谢谢

标签: javascript html google-chrome firefox


【解决方案1】:

根据个人经验,我注意到 Chrome 在处理小错误时更加宽容。奇怪的是,您在调试框中根本没有收到错误... 但是,我可以从阅读代码中看到一个地方是您定义变量 a,b,c... 我建议在每个变量之后放置一个逗号。所以,你得到:

var a = parseInt(answer1),
    b = parseInt(answer2),
    c = parseInt(answer3),
    d = parseInt(answer4),
    e = parseInt(answer5),
    f = parseInt(answer6),
    g = parseInt(answer7),
    h = parseInt(answer8),
    ii = parseInt(answer9),
    j = parseInt(answer10);

那么这就是我认为你有错误的地方。在定义了c 之后,您又拥有var c = ...。所以,试着删除那里的var

【讨论】:

    最近更新 更多