在JavaScript中为for循环创建HTML元素?

时间:2017-03-15 13:19:29

标签: javascript html loops

我正在使用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++;){

以下是该页面的完整代码:

&#13;
&#13;
			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;
&#13;
&#13;

您可以在代码段中看到它提供的错误。

3 个答案:

答案 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];
}