0

JavaScriptを使用してテーブルを作成し、データを入力したいと考えています。そこで、promptメソッドとループを使用することにしましたwhile

しかし、ページを読み込もうとすると、Google Chrome 開発者ツールで常に 2 つのエラー メッセージが表示されます。 ここに画像の説明を入力

ここにコードがあります

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

どうしたの?

4

3 に答える 3

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で変数を宣言しないことにより、意図せずにグローバル変数を作成していることになります。これはおそらくあなたのページでは大きな問題ではありませんが、悪い習慣です。

さらに、 a内の唯一の「有効な」要素は(技術的にはそのtbody、thead、およびtfootであり、有効な子は)であるため、追加する<th>タグをa内でラップする必要があります。<tr><table><tr><tr>

于 2013-02-05T17:13:36.350 に答える
1

最初のループで終了 } がありません:

for(j = 0; j<headers.length;j++) {

  tab += "<th>" + headers[j] + "</th>";

}

私は、彼がヘッダーをループして列を続け、テーブルを閉じようとしていると推測します。ヘッダーを介してループせず、ヘッダーごとにすべての行を追加します。そして、確かにヘッダーをループせず、ヘッダーごとにすべての行をループし、テーブルを閉じて書き込みます。

于 2013-02-05T17:17:48.640 に答える
0

コードで onStart(){} メソッドが正しく閉じられていません。以下のコードの前にもう 1 つ「} 」を追加します

</script>
</head> 
于 2013-02-05T17:18:16.690 に答える