-2

私が作成したスクリプトはループし、ユーザー入力に基づいてテーブルを作成します.super = 2の場合、最初のテーブルを適切に印刷していることを除いて、テーブルに異なる番号で出力された2つのテーブルがあるはずです. 、それから2番目のものをするとき、それは最初のものも再版します..何かアイデアはありますか?

コード:

<html>
<head>

<script type="text/javascript">
function createTable()
{
var num_ports = document.getElementById('ports').value;
var num_super = document.getElementById('super').value;
var num_rows = document.getElementById('rows').value;
var num_cols = document.getElementById('cols').value;
var tbody = '';
var colStart = num_cols / num_super;
var y = 1;
for( var i = 1; i <= num_super; i++){
    var theader = '<div style="margin:0 auto;"><table border="1" style="border:1px solid black; float:left;">\n';
        for(u = 1; u <= num_rows; u++){
          tbody += '<tr>';
            for( var j = 1; j <= colStart; j++)
            {
            tbody += '<td style="width:80px; height:70px;">';
            tbody += '<sub style="float:right; position:relative; top:24px; z-index:11;  ">' + y + '</sub>';
            tbody += '</td>';
            y++;
            }
    tbody += '</tr>\n';
}
var tfooter = '</table></div>';
document.getElementById('wrapper').innerHTML += theader + tbody + tfooter;
}
}
</script>
</head>

<body>
<form name="tablegen">
<label>Ports: <input type="text" name="ports" id="ports"/></label><br />
<label>Super Columns: <input type="text" name="super" id="super"/></label><br />
<label>Rows: <input type="text" name="rows" id="rows"/></label><br />
<label>Columns: <input type="text" name="cols" id="cols"/></label><br/>
<input name="generate" type="button" value="Create Table!" onclick='createTable();'/>
</form>

<div id="wrapper"></div>
</body>
</html>

私はどのように見えるべきですか:

のように見えるはずです

それはどのように見えるか:

悪いテーブル

4

2 に答える 2

2

コメントが言うように-あなたはtBodyをクリアします

var tbody = '';

ループの前ですが、それは一度だけ起こります。ループの外側で宣言され、 '' にリセットされることはないため、最初のテーブルの内容は 2 番目のループでもそのままです。

for( var i = 1; i <= num_super; i++){
    var tbody = '';
    //...
于 2013-01-28T16:14:11.350 に答える
0

はい、どうぞ

    <script type="text/javascript">
        function createTable()
        {
            var num_ports = document.getElementById('ports').value;
            var num_super = document.getElementById('super').value;
            var num_rows = document.getElementById('rows').value;
            var num_cols = document.getElementById('cols').value;
            var tbody = '';
            var colStart = num_cols / num_super;
            var y = 1;
            for( var i = 1; i <= num_super; i++){
                var theader = '<div style="margin:0 auto;"><table border="1" style="border:1px solid black; float:left;">\n';
                tbody = '';
                for(u = 1; u <= num_rows; u++){
                    tbody += '<tr>';
                    for( var j = 1; j <= colStart; j++)
                    {
                        tbody += '<td style="width:80px; height:70px;">';
                        tbody += '<sub style="float:right; position:relative; top:24px; z-index:11;  ">' + y + '</sub>';
                        tbody += '</td>';
                        y++;
                    }
                    tbody += '</tr>\n';
                }
                var tfooter = '</table></div>';
                document.getElementById('wrapper').innerHTML += theader + tbody + tfooter;
            }
        }
    </script>
</head>

<body>
<form name="tablegen">
    <label>Ports: <input type="text" name="ports" id="ports"/></label><br />
    <label>Super Columns: <input type="text" name="super" id="super"/></label><br />
    <label>Rows: <input type="text" name="rows" id="rows"/></label><br />
    <label>Columns: <input type="text" name="cols" id="cols"/></label><br/>
    <input name="generate" type="button" value="Create Table!" onclick='createTable();'/>
</form>

<div id="wrapper"></div>
</body>
</html>

追加したvar tbody = '';

于 2013-01-28T16:17:52.780 に答える