我想用javascript创建表并用数据填充它。所以我决定使用prompt
方法并循环while
。
但是当我尝试加载页面时,我总是会在Google Chrome开发者工具中收到两条错误消息
这是代码
<html>
<head>
<meta charset="utf-8">
<script type="text/javascript">
function onStart() {
var list = new Array();
var headers = new Array("Имя","Отчество","Фамилия","Дата рождения");
var i = -1;
while(true) {
var a = prompt("Имя","noname");
var b = prompt("Отчество","nomiddlename");
var c = prompt("Фамилия","nosurname");
var d = prompt("Дата рождения!",0);
if (confirm("Уверены что хотите добавить студента?")) {
i++;
list[i] = a + "-" + b + "-" + c + "-" + d;
}else{ break; };
}
tab = "<table>";
for(j = 0; j<headers.length;j++) {
tab += "<th>" + headers[j] + "</th>";
for(var j = 0; j < list.length; j++) {
var params = list[i].split('-');
tab += "<tr>";
for(k = 0; k < params.length;k++) {
tab +="<td>" + params[k] + "</td>";
}
tab +="</tr>";
}
tab +="</table>";
document.write(tab);
};
</script>
</head>
<body onLoad = "onStart()">
</body>
有什么问题?
答案 0 :(得分:3)
你的for循环似乎是错误的缩进而没有正确关闭
for(j = 0; j<headers.length;j++) {
tab += "<th>" + headers[j] + "</th>";
for(var j = 0; j < list.length; j++) {
var params = list[i].split('-');
tab += "<tr>";
for(k = 0; k < params.length;k++) {
tab +="<td>" + params[k] + "</td>";
}
tab +="</tr>";
}
应该是
for(j = 0; j<headers.length;j++) {
tab += "<th>" + headers[j] + "</th>";
}
for(var j = 0; j < list.length; j++) {
var params = list[i].split('-');
tab += "<tr>";
for(k = 0; k < params.length;k++) {
tab +="<td>" + params[k] + "</td>";
}
tab +="</tr>";
}
与您的问题没有直接关系,但您还有一些其他常见的javascript错误 通过不用var声明变量,您无意中创建了全局变量。虽然这可能不是你网页上的一个大问题,但这是不好的做法。
此外,您应该在<th>
内包含要追加的<tr>
个标记,因为<table>
中唯一的“有效”元素是<tr>
(技术上它的tbody,thead和tfoot,其中唯一有效的孩子是<tr>
)。
答案 1 :(得分:1)
你在第一次循环中错过了结束}:
for(j = 0; j<headers.length;j++) {
tab += "<th>" + headers[j] + "</th>";
<强>} 强>
我会猜测他正试图循环通过标题,然后是列,然后关闭表格。不循环通过标头,并为每个标头添加所有行。并且,当然不会循环通过标题和每个标题循环遍历所有行并关闭并写入表。
答案 2 :(得分:0)
在您的代码中,onStart(){}方法未正确关闭。在下面的代码前面添加一个“} ”
</script>
</head>