表格:JavaScript不起作用

时间:2014-11-25 18:33:14

标签: javascript html css for-loop html-table

我正在尝试使用HTML和JavaScript创建一个10X10表格,发现它不起作用,任何人都可以找到错误.... HTML代码:

<head>
<script type="text/javascript" src="grid.js"></script>
<link rel="stylesheet" href="grid.css" type="text/css"  />
 <title>GameOFLife</title>
 </head>
 <body onload="createTable()">
 </body>

JavaScript代码:

function createTable(){
var body = document.getElementsByTagName('body');
body.innerHTML('<table id="table"></table>');
var table = document.getElementById('table');
for(var i = 0 ; i<10 ; i++){
      table.innerHTML('<tr><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td> </tr>');

 }
   var td = document.getElementsByTagName('td')
   td.style.width = 10+'px';
   td.style.height = 10+'px';
   td.style.margin = 0+'px';
   td.style.padding = 0+'px';
   td.style.border = 1+'px'+' solid black'  ;

  }

3 个答案:

答案 0 :(得分:1)

试试这个:你的主要错误是getElementsByTagName()返回一个数组,所以你需要获取它返回的数组中的第一个元素。

   <script type="text/javascript">
       function createTable(){
           var body = document.getElementsByTagName('body');
           body[0].innerHTML = '<table id="table"></table>';
           var table = document.getElementById('table');

           for(var i = 0 ; i<10 ; i++){
              table.innerHTML += '<tr><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td> </td><td></td><td></td> </tr>';
           }
           var tds = document.getElementsByTagName('td')
           for(var j = 0; j < tds.length; j++){
               tds[j].style.width = 10+'px';
               tds[j].style.height = 10+'px';
               tds[j].style.margin = 0+'px';
               tds[j].style.padding = 0+'px';
               tds[j].style.border = 1+'px'+' solid black'  ;
           }

      }
</script>

答案 1 :(得分:0)

function str_repeat ( input, multiplier )
{
  var buf = '';
  while (multiplier)
  {
    if (multiplier & 1) buf += string;
    string += string;
    multiplier >>= 1;
  }
  return buf;
}

var row = '<tr>' + str_repeat('<td></td>', 10) + '</tr>';
var tbl = '<table>' + str_repeat(row, 10) + '</table>';
var table = document.createElement('table');
table.innerHTML = tbl;
document.body.appendChild(table);

或更好(更易读和可维护)

var table = document.createElement('table');
var row, cell, i, j;
for(i=0; i<10; i++) {
  row = document.createElement('tr');
  for(j=0; j<10; j++) {
    cell = document.createElement('td');
    cell.style = {border: '1px solid silver'};
    row.appendChild(cell);
  }
  table.appendChild(row);
}
document.body.appendChild(table);

答案 2 :(得分:0)

我会使用document.write()

function createTable(){
    	document.write('<table id="table">');
    	for(var i = 0 ; i<10 ; i++){
    		document.write('<tr><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td> </tr>');
    	}
    	document.write('</table>');
    	document.write("<style>td { width : 10px; height : 10px; margin : 0px; padding : 0px; border : 1px solid black;}</style>");
    }
<body onload="createTable()">
</body>