1

我正在尝试根据用户输入动态创建一个表,它运行良好,但是,它应该根据super用户提供的输入创建一个表,所以如果super2,那么它会循环创建 2 个表。但是它正在做所有事情,因为如果是这样,那么表格将彼此相邻,而不是彼此下方,因为我已经以这种方式设置了 CSS。有任何想法吗?

<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 = 0; 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>

<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

1 回答 1

3

它在这一行的当前迭代中将它创建的表重置为新表:

document.getElementById('wrapper').innerHTML = theader + tbody + tfooter;

你必须做这样的事情:

document.getElementById('wrapper').innerHTML += theader + tbody + tfooter;

除了您的评论:

var colStart = num_cols / num_super;

应该是:

var colStart = num_cols * num_super;
于 2013-01-28T15:16:13.477 回答