这是我的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);
答案 0 :(得分:2)
提示返回null或字符串。它没有返回数字。
我建议你换到:
while (empHours && parseInt(empHours, 10) >= 0)
这会防范null
并将字符串转换为数字,然后再检查它是否为负数。
此外,我建议您不要使用document.write()
进行调试。如果在错误的时间使用,它确实会弄乱现有的页面。您应该使用console.log()
或实际的调试器。
答案 1 :(得分:2)
您的问题似乎是语法错误,错字。
document.write("Made it to for loop"):
^
this is the problem in your for loop.
您的上述测试实际上也在删除该表。删除document.write
,您的代码就可以正常使用。