javascript for循环创建太多表

时间:2013-01-28 16:07:03

标签: javascript html css

脚本我做了循环并根据用户输入创建了一个表,如果super = 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>

我应该是什么样的:

should look like

它看起来像什么:

bad table

2 个答案:

答案 0 :(得分:2)

就像评论所说 - 你清楚tBody

var tbody = '';
在循环之前

,但只发生一次。由于它在循环外被声明,并且永远不会重置为'',因此第一个表的内容仍然存在于第二个循环中,请尝试

for( var i = 1; i <= num_super; i++){
    var tbody = '';
    //...

答案 1 :(得分: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 = '';