使用js创建包含值的表

时间:2013-02-05 17:10:57

标签: javascript

我想用javascript创建表并用数据填充它。所以我决定使用prompt方法并循环while

但是当我尝试加载页面时,我总是会在Google Chrome开发者工具中收到两条错误消息 enter image description here

这是代码

<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>

有什么问题?

3 个答案:

答案 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>