我正在使用Javascript从数组创建和填充HTML表。 这段代码非常合适:
var i = 0;
while (i < headers.length){
var titleCell = titles.insertCell(i);
titleCell.innerHTML = headers[i];
i++;
}
然而,当我用以下for循环替换它时,它完全停止工作。不再创建或填充单元格。:
for (var i = 0; i < headers.length; i++;){
var titleCell = titles.insertCell(i);
titleCell.innerHTML = headers[i];
}
我对两者之间的差异感到非常困惑。为什么while循环可以工作但不是for循环?
编辑:问题不在于i
的声明。在运行循环之前,我尝试过var i = 0;
甚至声明i
。他们俩没有任何区别。
我在我的控制台中遇到错误,但它根本不是关于i
的声明。错误是:
在for-loop控制之后SyntaxError:missing)
但据我所知,代码行是完美的:
for (var i = 0; i < headers.length; i++;){
以下是该页面的完整代码:
function submitClient() {
if (window.opener != null && !window.opener.closed) {
var txtName = window.opener.document.getElementById("clientID");
txtName.value = document.getElementById("customerID").value;
}
window.close();
}
var columnTitles = ["User ID", "First Name", "Last Name"];
var clientList = JSON.parse('[{"ID":55,"firstName":"blabla","lastName":"bla"},{"ID":56,"firstName":"blabla","lastName":"bla"},{"ID":57,"firstName":"blabla","lastName":"bla"}]');
function createTable(headers, data) {
// Create table.
var table = document.createElement('table');
// Insert New Row for table at index '0'.
var titles = table.insertRow(0);
for (var i = 0; i < headers.length; i++;){
var titleCell = titles.insertCell(i);
titleCell.innerHTML = headers[i];
}
var div = document.getElementById('dataTable');
div.appendChild(table);
}
createTable(columnTitles, clientList);
&#13;
<!DOCTYPE HTML>
<html>
<body>
<form>
Client ID: <input type="text" id="customerID"><br>
<input type="button" value="Select" onclick="submitClient();" />
</form>
<div id="dataTable"></div>
</body>
</html>
&#13;
您可以在代码段中看到它提供的错误。
答案 0 :(得分:2)
你必须在for循环中声明一个变量i:
for (var i = 0; i < headers.length; i++;){
var titleCell = titles.insertCell(i);
titleCell.innerHTML = headers[i];
}
答案 1 :(得分:2)
在您的第二个示例中,您错过了for循环中的var
关键字。您还在;
部分之后添加了i++
。这就是您的控制台错误来自的地方。
for (var i = 0; i < headers.length; i++){
如果在进行更改之前检查它,您可能会在浏览器控制台中看到JS错误。
答案 2 :(得分:0)
您没有在for循环中将i
声明为变量。
通过在其前面附加i
来声明var
变量,如下所示:
for (var i = 0; i < headers.length; i++;){
var titleCell = titles.insertCell(i);
titleCell.innerHTML = headers[i];
}