在JavaScript中将数组元素打印到它们各自的列中
我需要用JavaScript获取一个数组,并以类似表格的格式将其打印到屏幕上。我可以让列标题毫无问题地打印出来,但我正在努力让数据以类似表格的方式打印在这些列下 JavaScript文件(数据文件): HTML文件:在JavaScript中将数组元素打印到它们各自的列中,javascript,html,html-table,createelement,Javascript,Html,Html Table,Createelement,我需要用JavaScript获取一个数组,并以类似表格的格式将其打印到屏幕上。我可以让列标题毫无问题地打印出来,但我正在努力让数据以类似表格的方式打印在这些列下 JavaScript文件(数据文件): HTML文件: <!DOCTYPE html /> <html> <title>The Data Structure</title> <body> <script type="text/javascript" src="TheDa
<!DOCTYPE html />
<html>
<title>The Data Structure</title>
<body>
<script type="text/javascript" src="TheData.js"></script>
<script>
function printObj(theObject){
var theOutputTable = '';
var theOutputHeader = '';
//Print the Column Headers for the table.
for (var theColumnHeaders in theObject){
var CreatetheTagTR = document.createElement('th');
var theColumnText = document.createTextNode(theColumnHeaders);
CreatetheTagTR.appendChild(theColumnText);
document.body.appendChild(CreatetheTagTR);
}
//Eventually, print data in the repsective columns by row.
for (var property in theObject){
theOutput = theObject[property];
var theElement = document.createElement('tr');
var theText = document.createTextNode(theOutput);
theElement.appendChild(theText);
document.body.appendChild(theElement);
}
}
printObj(PersonalInformation);
</script>
</body>
</html>
数据结构
函数printObj(对象){
var theOutputTable='';
var theoutheader='';
//打印表的列标题。
for(对象中的列标题变量){
var CreatetheTagTR=document.createElement('th');
var theColumnText=document.createTextNode(列标题);
创建tagtr.appendChild(列文本);
document.body.appendChild(CreatetheTagTR);
}
//最后,按行打印repsective列中的数据。
for(对象中的var属性){
输出=对象[属性];
var theElement=document.createElement('tr');
var theText=document.createTextNode(输出);
元素。追加子元素(文本);
文件.正文.附件(元素);
}
}
printObj(个人信息);
如果您重新排列数据,使其看起来像这样,那么打印值表会更容易
在javascript中:
//structure the array this way
var names = [
{ first: 'john', last: 'smith' },
{ first: 'frank', last: 'ricard' }
{ first: 'jimi', last: 'hendrix' }
];
//Then, you can simply iterate through the array and build a table.
for(var i = 0; names.length; i++) {
var name = names[i];
var first = name.first
var last = name.last
//build your table markup in here.
}
或在php中:
//structure array this way
$names = array(
array('first' => 'john', 'last'=>'smith'),
array('first' => 'frank', 'last'=>'ricard'),
array('first' => 'jimi', 'last'=>'hendrix')
);
//iterate through array this way
foreach($names as $name) {
$first = $name['first'];
$last = $name['last'];
//build your table markup in here.
}
如果您重新排列数据,使其看起来像这样,您将更容易打印值表 在javascript中:
//structure the array this way
var names = [
{ first: 'john', last: 'smith' },
{ first: 'frank', last: 'ricard' }
{ first: 'jimi', last: 'hendrix' }
];
//Then, you can simply iterate through the array and build a table.
for(var i = 0; names.length; i++) {
var name = names[i];
var first = name.first
var last = name.last
//build your table markup in here.
}
或在php中:
//structure array this way
$names = array(
array('first' => 'john', 'last'=>'smith'),
array('first' => 'frank', 'last'=>'ricard'),
array('first' => 'jimi', 'last'=>'hendrix')
);
//iterate through array this way
foreach($names as $name) {
$first = $name['first'];
$last = $name['last'];
//build your table markup in here.
}
如果您试图将JavaScript数组的内容作为表打印到DOM中,那么请看下面的示例
var firstNames = ['Marc', 'John', 'Drew', 'Ben'];
var lastNames = ['Wilson', 'Smith', 'Martin', 'Wilcox'];
var htmlStr = "<tbody>";
for(int i=0; i < firstNames.length; ++i) {
htmlStr += "<tr>";
htmlStr += "<td>" + firstNames[i] + "</td>";
htmlStr += "<td>" + lastNames[i] + "</td>";
htmlStr += "</tr>";
}
htmlStr += "</tbody>"
var firstNames=['Marc','John','Drew','Ben'];
var lastNames=['Wilson','Smith','Martin','Wilcox'];
var htmlStr=“”;
对于(int i=0;i
在本例中,我创建了表的
tbody
,然后用两个数组的内容填充它。我已经将它划分为比需要更多的步骤,以便更容易看到正在发生的事情。一旦您了解了这里发生的事情,就可以将标题添加到此文件中,然后将其添加到DOM中。如果您试图将JavaScript数组的内容作为表打印到DOM中,请查看以下示例
var firstNames = ['Marc', 'John', 'Drew', 'Ben'];
var lastNames = ['Wilson', 'Smith', 'Martin', 'Wilcox'];
var htmlStr = "<tbody>";
for(int i=0; i < firstNames.length; ++i) {
htmlStr += "<tr>";
htmlStr += "<td>" + firstNames[i] + "</td>";
htmlStr += "<td>" + lastNames[i] + "</td>";
htmlStr += "</tr>";
}
htmlStr += "</tbody>"
var firstNames=['Marc','John','Drew','Ben'];
var lastNames=['Wilson','Smith','Martin','Wilcox'];
var htmlStr=“”;
对于(int i=0;i
在本例中,我创建了表的
tbody
,然后用两个数组的内容填充它。我已经将它划分为比需要更多的步骤,以便更容易看到正在发生的事情。一旦您了解了这里发生的事情,您就可以将标题添加到此中,然后将其添加到DOM中。我将执行类似以下操作:
var doc = document;
function E(e){
return doc.getElementById(e);
}
function PersonalInformation(){
function C(e){
return doc.createElement(e);
}
this.FirstNameTableHead = 'First Name';
this.LastNameTableHead = 'Last Name';
this.FirstNames = ['Marc', 'John', 'Drew', 'Ben'];
this.LastNames = ['Wilson', 'Smith', 'Martin', 'Wilcox'];
this.addName = function(first, last){
this.FirstNames.push(first);
this.LastNames.push(last);
}
this.createTable = function(){
var nd = C('div'), tbl = C('table'), tr1 = C('tr'), th1 = C('th'), th2 = C('th');
var fnh = doc.createTextNode(this.FirstNameTableHead);
var lnh = doc.createTextNode(this.LastNameTableHead);
th1.appendChild(fnh); th2.appendChild(lnh); tr1.appendChild(th1);
tr1.appendChild(th2); tbl.appendChild(tr1);
var fn = this.FirstNames, ln = this.LastNames;
for(var i in fn){
var tr = C('tr'), td1 = C('td'), td2 = C('td');
var tn1 = doc.createTextNode(fn[i]), tn2 = doc.createTextNode(ln[i]);
td1.appendChild(tn1); td2.appendChild(tn2); tr.appendChild(td1);
tr.appendChild(td2); tbl.appendChild(tr);
}
nd.appendChild(tbl);
return nd.innerHTML;
}
}
var PI = new PersonalInformation();
E('wherever').innerHTML = PI.createTable();
此构造函数使用您的名字和姓氏等创建一个表,并将其作为字符串返回。您可以使用
.innerHTML
插入它。请参阅。我会做一些更像:
var doc = document;
function E(e){
return doc.getElementById(e);
}
function PersonalInformation(){
function C(e){
return doc.createElement(e);
}
this.FirstNameTableHead = 'First Name';
this.LastNameTableHead = 'Last Name';
this.FirstNames = ['Marc', 'John', 'Drew', 'Ben'];
this.LastNames = ['Wilson', 'Smith', 'Martin', 'Wilcox'];
this.addName = function(first, last){
this.FirstNames.push(first);
this.LastNames.push(last);
}
this.createTable = function(){
var nd = C('div'), tbl = C('table'), tr1 = C('tr'), th1 = C('th'), th2 = C('th');
var fnh = doc.createTextNode(this.FirstNameTableHead);
var lnh = doc.createTextNode(this.LastNameTableHead);
th1.appendChild(fnh); th2.appendChild(lnh); tr1.appendChild(th1);
tr1.appendChild(th2); tbl.appendChild(tr1);
var fn = this.FirstNames, ln = this.LastNames;
for(var i in fn){
var tr = C('tr'), td1 = C('td'), td2 = C('td');
var tn1 = doc.createTextNode(fn[i]), tn2 = doc.createTextNode(ln[i]);
td1.appendChild(tn1); td2.appendChild(tn2); tr.appendChild(td1);
tr.appendChild(td2); tbl.appendChild(tr);
}
nd.appendChild(tbl);
return nd.innerHTML;
}
}
var PI = new PersonalInformation();
E('wherever').innerHTML = PI.createTable();
此构造函数使用您的名字和姓氏等创建一个表,并将其作为字符串返回。您可以使用
.innerHTML
插入它。请参阅。是否真的要将表行附加到文档正文而不是表?只需假设最坏的情况。我应该在其他地方做吗?看起来行数据嵌套在标题中。首先创建一个表。然后是一排。用文本数据填充表格单元格。文本不会直接进入行元素。您仍然没有创建
元素来向其中添加行、标题单元格和数据单元格。(就像@Jeffman所说的:D)您真的要将表行附加到文档体而不是表中吗?假设最坏的情况。我应该在其他地方做吗?看起来行数据嵌套在标题中。首先创建一个表。然后是一排。用文本数据填充表格单元格。文本不会直接进入行元素。您仍然没有创建
元素来向其中添加行、标题单元格和数据单元格。(就像@Jeffman说的:D)