0

スクリプトが原因でブラウザがフリーズし、スクリプトを停止するように求められます。firebug を使用すると、for ループが際限なくループし、進行していないことがわかります。ループは次のとおりです。

for (var x = 1; x < 7; x++) {
    var y = x; //to stop the value of x being altered in the concat further down
    var questionidd = "mcq_question_id";
    console.log("1 = " + questionidd);
    var questionid = questionidd.concat(y); // mcq_question_id$ctr the question number
    console.log("2 = " + questionid);
    var mcqid = form[questionid].value; // the questions id on db
    console.log("3 = " + mcqid);

    var answerr = "mcq_question";
    var answer = answerr.concat(y); // mcq_question$ctr the questions chosen answer
    var chosenanswer = form[answer].value; // the answers value
    console.log("4 = " + chosenanswer);
    var amp = "&";
    var equal = "=";
    var questionide = questionid.concat(equal); // "mcq_question_id$ctr="
    var questionida = amp.concat(questionide); // "&mcq_question_id$ctr="
    var answere = amp.concat(answer, equal); // "&mcq_question$ctr="
    if (x = 1) {
        send.push(questionide, mcqid, answere, chosenanswer);
    }
    else {
        send.push(questionida, mcqid, answere, chosenanswer);
    }
}

更新 - 修正済み! 愚かな間違いは最悪です

4

3 に答える 3

6
if (x = 1) {

する必要があります

if (x === 1) {

===演算子は、代入演算子が を割り当てている間に比較ます。多くの人がこの間違いを犯します。:)=

最初のループが実行xされるとゼロに設定され、プロセスが終了するまで無限に繰り返されます。だからループは止まらない。

于 2012-12-30T00:58:48.667 に答える
5

if (x = 1) {する必要がありますif (x === 1) {

このような単純なプログラミング エラーをキャッチする IDE に切り替えることを検討してください。

于 2012-12-30T00:58:39.043 に答える
2

「if(x = 1)」ではなく「if(x == 1)」が必要なようです。

コードは、xが1と同等であることを確認するのではなく、xを値1に繰り返し設定します。

于 2012-12-30T01:00:13.740 に答える