在我的代码中:
function addTable(){
var timestamp = ["Mon", "Tues", "Wed", "Thurs", "Fri", "Sat", "Sun"];
var value =[1,2,3,4,5,6,7]
var items = [timestamp, value];
var tableDiv = document.getElementById("table2");
var table = document.createElement('TABLE');
var tbody= document.createElement('TBODY');
var tr = document.createElement('TR');
table.appendChild(tbody);
//create header
tbody.appendChild(tr);
var heading = ["Timestamp", "Value"];
for (var col = 0; col<heading.length; col++){
var th = document.createElement('TH');
th.width = '75';
th.appendChild(document.createTextNode(heading[col]));
tr.appendChild(th);
}
//create rows for each stock[i] length
for (var f=0; f < items[i].length; f++){
var tr = document.createElement('TR');
}
for (i = 0; i < items.length; i++) {
for (j = 0; j < items[i].length; j++) {
var td = document.createElement('TD')
td.appendChild(document.createTextNode(items[i][j]));
tr.appendChild(td);
}
tbody.appendChild(tr);
}
tableDiv.appendChild(table);
}
我创建了一个填充了两个数组(时间戳和值)的二维数组。 此代码的问题在于它仅生成列出时间戳内容的单行,然后生成后面列出的值内容。我想要创建的是一个表,其中每一行都有时间戳和它各自的值。 第1行将是&#34; Mon&#34;在第一个单元格然后&#34; 1&#34;在第二个细胞/列中。 第2行将是&#34;周二&#34;在第一个单元格然后&#34; 2&#34;在第二个细胞/列中。
我在这段代码中做错了什么?
此外,在我的实际代码中,数组是动态生成的,因此时间戳和值数组的长度未知。
答案 0 :(得分:0)
您只需查看此代码......
<html>
<head>
<title>GRID</title>
<style type="text/css">
table tr td { width: 50px; height: 50px; background-color: silver; border: 1px solid black; }
table tr td.over { background-color: yellow; }
table tr td.active { background-color: red; }
.controls { padding: 20px; }
</style>
</head>
<body>
<div class="controls">
<a href="javascript:void(0)" data-move="[-1, 0]">left</a>
<a href="javascript:void(0)" data-move="[0, -1]">top</a>
<a href="javascript:void(0)" data-move="[1, 0]">right</a>
<a href="javascript:void(0)" data-move="[0, 1]">bottom</a>
<a href="javascript:void(0)" data-move="[-1, -1]">topleft</a>
<a href="javascript:void(0)" data-move="[1, -1]">topright</a>
<a href="javascript:void(0)" data-move="[1, 1]">bottomright</a>
<a href="javascript:void(0)" data-move="[-1, 1]">bottomleft</a>
</div>
<table></table>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
var rows = 6,
cols = 7;
for(var i = 0; i < rows; i++) {
$('table').append('<tr></tr>');
for(var j = 0; j < cols; j++) {
$('table').find('tr').eq(i).append('<td></td>');
$('table').find('tr').eq(i).find('td').eq(j).attr('data-row', i).attr('data-col', j);
}
}
$('table tr td').mouseover(function() {
$(this).addClass('over');
}).mouseout(function() {
$(this).removeClass('over');
}).click(function() {
$(this).addClass('active');
});
$(".controls a").click(function() {
var $active = $("table tr td.active");
if($active.length > 0) {
var move = $.parseJSON($(this).attr('data-move'));
if(move.length >= 2) {
$active.each(function() {
var row = parseInt($(this).attr('data-row')) + move[1],
col = parseInt($(this).attr('data-col')) + move[0];
if(col >= cols) col = cols - 1;
if(col < 0) col = 0;
if(row >= rows) row = rows - 1;
if(row < 0) row = 0;
$(this).removeClass('active');
$('table tr').eq(row).find('td').eq(col).addClass('active');
});
}
}
});
});
</script>
</body>
</html>
答案 1 :(得分:0)
请检查此解决方案是否有效:
您也可以在线试用解决方案Link
<div id="table2"></div>
<script>
addTable()
function addTable()
{
var timestamp = ["Mon", "Tues", "Wed", "Thurs", "Fri", "Sat", "Sun"];
var value =[1,2,3,4,5,6,7];
var items = [timestamp, value];
var tableDiv = document.getElementById("table2");
var table = document.createElement('TABLE');
var tbody= document.createElement('TBODY');
var tr = document.createElement('TR');
table.appendChild(tbody);
//create header
tbody.appendChild(tr);
var heading = ["Timestamp", "Value"];
for (var col = 0; col<heading.length; col++)
{
var th = document.createElement('TH');
th.width = '75';
th.appendChild(document.createTextNode(heading[col]));
tr.appendChild(th);
}
for (var f=0; f<timestamp.length; f++)
{
var tr = document.createElement('TR');
var td1 = document.createElement('TD');
var td2 = document.createElement('TD');
td1.appendChild(document.createTextNode(timestamp[f]));
td2.appendChild(document.createTextNode(value[f]));
tr.appendChild(td1);
tr.appendChild(td2);
tbody.appendChild(tr);
}
tableDiv.appendChild(table);
}
</script>
答案 2 :(得分:-1)
for (var f=0; f < items[i].length; f++){
var tr = document.createElement('TR');
}
you should use items.length here.
和i的价值来自