我可以在这段代码中使用循环吗?

时间:2017-04-10 17:05:57

标签: javascript loops

是否可以在此代码中的某处使用循环?这是要求之一,我不知道在哪里使用它; /如果有什么"丑陋"关于代码随时告诉我:)

function check() {
    var question1 = document.quiz.question1.value;
    var question2 = document.quiz.question2.value;
    var question3 = document.quiz.question3.value;
    var question4 = document.quiz.question4.value;
    var question5 = document.quiz.question5.value;
    var question6 = document.quiz.question6.value;
    var question7 = document.quiz.question7.value;
    var question8 = document.quiz.question8.value;
    var messages = ["You passed!", "You failed"];
    var range;
    var correct = 0;
    var pictures = ["images/passed.gif", "images/failed.gif"];
    if (question1 > 5.5) {
        correct++;
    }
    if (question2 > 5.5) {
        correct++;
    }
    if (question3 > 5.5) {
        correct++;
    }
    if (question4 > 5.5) {
        correct++;
    }
    if (question5 > 5.5) {
        correct++;
    }
    if (question6 > 5.5) {
        correct++;
    }
    if (question7 > 5.5) {
        correct++;
    }
    if (question8 > 5.5) {
        correct++;
    }
    if (correct > 5) {
        range = 0;
    }
    if (correct < 5) {
        range = 1;
    }
    document.getElementById("after_submit").style.visibility = "visible";
    document.getElementById("message").innerHTML = messages[range];
    document.getElementById("picture").src = pictures[range];
}

2 个答案:

答案 0 :(得分:1)

你可以这样做。

function check() {
    var answers = [
        document.quiz.question1.value, 
        document.quiz.question2.value, 
        document.quiz.question3.value, 
        document.quiz.question4.value, 
        document.quiz.question5.value, 
        document.quiz.question6.value, 
        document.quiz.question7.value, 
        document.quiz.question8.value
    ];
    var messages = ["You passed!", "You failed"];
    var range;
    var correct = 0;
    var pictures = ["images/passed.gif", "images/failed.gif"];
    for (var i = 0; i < answers.length; ++i) {
        if (answers[i] > 5.5)
            correct++;
    }
    document.getElementById("after_submit").style.visibility = "visible";
    document.getElementById("message").innerHTML = messages[range];
    document.getElementById("picture").src = pictures[range];
}

你甚至可以这样做(TankorSmash的建议)

function check() {
    var answers = [];
    for (var i = 1; i <= 8; ++i) {
       answers.push(document.quiz["question" + i].value);
    }
    var messages = ["You passed!", "You failed"];
    var range;
    var correct = 0;
    var pictures = ["images/passed.gif", "images/failed.gif"];
    for (var i = 0; i < answers.length; ++i) {
        if (answers[i] > 5.5)
            correct++;
    }
    document.getElementById("after_submit").style.visibility = "visible";
    document.getElementById("message").innerHTML = messages[range];
    document.getElementById("picture").src = pictures[range];
}

答案 1 :(得分:0)

通过 mplungjan aahung 解决方案的替代循环。

这个使用数组上的for-each循环使其更加干净,并使用三元运算符而不是if语句结束。

var answers = [
    document.quiz.question1.value, 
    document.quiz.question2.value, 
    document.quiz.question3.value, 
    document.quiz.question4.value, 
    document.quiz.question5.value, 
    document.quiz.question6.value, 
    document.quiz.question7.value, 
    document.quiz.question8.value
]
// Can also loop the question values as mentioned in the previous answer
/*
var answers = [];
for (var i = 1; i <= 8; ++i) {
   answers.push(document.quiz["question" + i].value);
}
*/
var messages = ["You passed!", "You failed"];
var range;
var correct = 0;
var pictures = ["images/passed.gif", "images/failed.gif"];

answers.forEach(function (value){
    (value > 5.5) ? correct++ : null;
});

document.getElementById("after_submit").style.visibility = "visible";
document.getElementById("message").innerHTML = messages[range];
document.getElementById("picture").src = pictures[range];
相关问题