For循环冻结Javascript?

For循环冻结Javascript?,javascript,html,dom,web,Javascript,Html,Dom,Web,这是我的web编程类的一个小的外部js脚本,它应该提示用户为员工工作的小时数,直到他们输入一个负数,当它打印一个具有适当行数(输入小时数的员工数)的表时,该表有一个工作小时数列和一个工资列。但是关于最后的for循环,我的浏览器中的js引擎被冻结了。如果我对循环进行注释,则提示可以正常工作。如果我加入一个无意义的while循环,它将一些东西打印到屏幕上,提示仍然有效,然后while循环运行。但是这个愚蠢的for循环只是冻结了整个脚本,而打开HTML页面实际上什么也做不了。空白页。作业已经晚了,我已

这是我的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);
var emphhours=0;
var numememployees=0;
var=0;
var总工资=0;
var=newarray();
做{
empHours=提示(“输入员工本周工作的小时数”);
如果(EMP小时数>-1){
numEmployees++;
若有(每小时1小时),;
确认(“您有“+numememployees+”名员工,是否正确?”);
var root=document.getElementById('tablediv');
var table=document.createElement('table');
var行、单元格;

for(i=0;i提示符返回null或字符串。它不返回数字

我建议您改为:

while (empHours && parseInt(empHours, 10) >= 0)
这可以防止
null
并在检查字符串是否为负数之前将其转换为数字


另外,我建议您永远不要使用
document.write()
进行调试。如果在错误的时间使用,它可能会弄乱现有页面。您应该使用
console.log()
或实际的调试器。

提示符返回null或字符串。它不返回数字

我建议您改为:

while (empHours && parseInt(empHours, 10) >= 0)
这可以防止
null
并在检查字符串是否为负数之前将其转换为数字


另外,我建议您永远不要使用
document.write()
进行调试。如果在错误的时间使用,它可能会真正弄乱现有页面。您应该使用
console.log()
或实际的调试器。

您的问题似乎是语法错误、打字错误

document.write("Made it to for loop"):
                                     ^
                                this is the problem in your for loop.
您上面的测试实际上也在删除表。删除
文档。编写
,您的代码工作正常


您的问题似乎是语法错误、打字错误

document.write("Made it to for loop"):
                                     ^
                                this is the problem in your for loop.
您上面的测试实际上也在删除表。删除
文档。编写
,您的代码工作正常


不,假设用户在输入完员工工时后输入了neg。除此之外,我正在做的肯定是哈哈……1)说明哪个浏览器受影响,2)发布一个测试用例,3)确保此JavaScript代码在DOM就绪后运行,最好是在一些用户交互(如按钮单击)之后。不,假设用户在输入完员工工作时间后输入neg。除此之外,我肯定在做什么哈哈…1)说明哪个浏览器受影响,2)将测试用例发布到,3)确保此JavaScript代码在DOM就绪后运行,最好是在一些用户交互(如按钮clickwait wait)后运行。循环作用于numEmployees,它是递增的,而不是返回的。@MassStrike-
numEmployees
是一个全局变量。wait wait wait…循环作用于numEmployees,这是递增的已更正,未返回。@MassStrike-
NumemEmployees
是一个全局变量。宾果。谢谢你。我真的打算在最近的某一天开始在提问之前阅读我的代码哈哈…@MassStrike-你应该做的是始终查看浏览器错误控制台或调试控制台,其中报告了任何脚本错误。这将节省你的时间我们数百小时的调试。是的,就我现在所处的环境而言,确实如此。然而,表格仍然没有打印。@jfriend00所说的,加上你可能还想在你的文本编辑器中添加一个语法验证插件。宾果。谢谢你。我真的打算在这几天提问之前开始阅读我的代码。哈哈…@MassStrike-您应该始终查看浏览器错误控制台或调试控制台,其中会报告任何脚本错误。这将节省您数百小时的调试时间。是的,就我目前所处的情况而言,确实如此。但是,该表仍然没有打印。@jfriend00说了些什么,另外,您可能还希望向y添加语法验证插件我们的文本编辑器。