1

これは私の Web プログラミング クラス用の小さな外部 js スクリプトです。これは、適切な行数 (従業員数どの時間に入力されたか) を、勤務時間の列と賃金の列で示します。しかし、最後の for ループに関する何かが、ブラウザの js エンジンをフリーズさせています。ループをコメントアウトすると、プロンプトは正常に機能します。画面に何かを出力する無意味な while ループを挿入すると、プロンプトは引き続き機能し、while ループが実行されます。しかし、このばかげた for ループの何かが、スクリプト全体をフリーズさせるだけであり、HTML ページを開いても文字通り何もしません。空白ページ。課題はすでに遅れており、私は途方に暮れています。

var empHours = 0;
var numEmployees = 0;
var empWage = 0;
var totalWages = 0;
var empWages = new Array();

do {
    empHours = prompt("Enter number of hours employee worked this week.");

    if (empHours > -1) {
        numEmployees++;
        if (empHours <= 40) {
            empWage = (15 * empHours)
            empWages[numEmployees-1] = empWage;
            totalWages += empWage;
        } else {
            empWage = (15 * 1.5 * empHours);
            empWages[numEmployees-1] = (15 * 1.5 * empHours);
            totalWages += empWage;
        }
    }
} while (empHours > -1);

confirm("You have " + numEmployees + " employees, is this correct?");

var root = document.getElementById('tablediv');
var table = document.createElement('table');
var row, cell;

for (i=0; i<=numEmployees; i++) {
    document.write("Made it to for loop"):
    row = table.insertRow(i);
    for (j=0; j<3; j++) {
        cell = row.insertCell(j);
        cell.innerHTML(empWages[i])
    }
}
root.appendChild(table);
4

2 に答える 2

1

あなたの問題は、構文エラー、タイプミスのようです。

document.write("Made it to for loop"):
                                     ^
                                this is the problem in your for loop.

上記のテストは、実際にはテーブルも削除しています。削除するdocument.writeと、コードは正常に機能します。

デモ

于 2012-09-13T04:27:02.423 に答える
1

Prompt は null または文字列を返します。数値は返しません。

次のように変更することをお勧めします。

while (empHours && parseInt(empHours, 10) >= 0)

nullこれにより、文字列が負かどうかを確認する前に、文字列を数値にガードして変換します。

document.write()また、デバッグには使用しないことをお勧めします。間違ったタイミングで使用すると、既存のページがめちゃくちゃになる可能性があります。console.log()または実際のデバッガを使用する必要があります。

于 2012-09-13T04:22:13.300 に答える