簡體   English   中英

使用Javascript動態創建html表

[英]Dynamically creating an html table with Javascript

我正在嘗試使用Javascript根據用戶輸入(實際上是兩三個表,這取決於用戶輸入..)創建一個表,我非常熟悉PHP,並且已經可以在PHP中使用它,但是我希望用戶以便能夠在查詢表之前查看該表。 我在這里找到了一個腳本,該腳本部分完成了我想要的工作,並嘗試對其進行了編輯(我發現它與PHP令人驚訝地相似)基本上,它計算按行和列將其拆分的單元格(端口)總數,“ super”列如果用戶希望將其拆分為多個表,這些表彼此並列,因此使用div標簽,則使用。 這是我的JS:

<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;
for( var i=0; i<num_super; i++){
    var theader = '<div><table border="1">\n';
        for(u=1; u<=num_row; u++){
          tbody += '<tr>';
            for( var j=0; j<colStart; j++)
            {
            tbody += '<td>';
            tbody += 'Cell ' + i + ',' + j;
            tbody += '</td>'
            }
    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>

這是經過PHP處理的最終輸出的樣子(端口:24,列:6,行:2,超級:2):

表

這是我一起放的js小提琴: http : //jsfiddle.net/9SnLB/

當前,當我單擊該按鈕時,什么都沒有發生,但是,我想那是我的第一個問題,但是我是否可以正確進行設置? 為什么按鈕不能運行該功能?

兩個錯誤。 您沒有關閉功能括號,即結尾處缺少}。 第二個是您使用$ row而不是您創建的num_rows變量。 由於某種原因,它在小提琴中不起作用,但是在本地起作用。 小提琴說createTable函數是未定義的。

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;
    for( var i=0; i<num_super; i++){
        var theader = '<div><table border="1">\n';
            for($u=1; $u<=num_rows; $u++){
              tbody += '<tr>';
                for( var j=0; j<colStart; j++)
                {
                tbody += '<td>';
                tbody += 'Cell ' + i + ',' + j;
                tbody += '</td>'
                }
        tbody += '</tr>\n';
    }
    var tfooter = '</table></div>';
    document.getElementById('wrapper').innerHTML = theader + tbody + tfooter;
}
}
var table = [["a1","a2","a3"]["b1","b2","b3"]["c1","c2","c3"]];
for(x = table.length;x > 0;x--) {
  document.write("<tr>");
  for(y = table[x].length;y > 0;y--) {
    document.write("<td>"+y+"</td>");
  }
document.write("</tr>");
}

抱歉,如果語法錯誤。 你明白了。

您需要將jsFiddle框架更改為“ no wrap(head)”,並更正javascript中的錯誤。 “ no wrap(head)”將允許訪問該功能。 “ for($ u = 1”循環缺少右括號,$ row應該是num_rows。“ for(j = 0”循環缺少最后一個“ tbody =”的分號。

這是更正的js。

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;
for (var i = 0; i < num_super; i++) {
    var theader = '<div><table border="1">\n';
    for ($u = 1; $u <= num_rows; $u++) {
        tbody += '<tr>';
        for (var j = 0; j < colStart; j++) {
            tbody += '<td>';
            tbody += 'Cell ' + i + ',' + j;
            tbody += '</td>';
        }
    }
    tbody += '</tr>\n';
}
var tfooter = '</table></div>';
document.getElementById('wrapper').innerHTML = theader + tbody + tfooter;

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM