我正试图通过document.write()
在javascript中将字符串打印到html,但似乎当我使用document.write()
时,函数中的其他代码不再起作用。
JavaScript代码:
<script type="text/javascript">
var my_d = {{ pass_kegg|safe }};
var myList_tmp = {{ pass_tmp|safe }};
var epgd = "EPGD"
var kegg = "KEGG"
function buildHtmlTable(myList,printSource) {
var columns = addAllColumnHeaders(myList);
document.write(printSource);
// Builds the HTML Table out of myList json data from Ivy restful service.
}
function addAllColumnHeaders(myList) {
// Adds a header row to the table and returns the set of columns.
// Need to do union of keys from all records as some records may not contain
// all records
}
</script>
HTML代码:
<body onload="buildHtmlTable(my_d, epgd);buildHtmlTable(myList_tmp, kegg)">
<table id="excelDataTable" border="1">
</table>
</body>
最初,有一个从JSON转换而来的html表可以在网页上看到。但是当我使用document.write()
打印字符串epgd
时,我的网页上只能看到两个字符串好像其他代码还没有运行。我已经搜索了这个问题,有人说document.write()
只适用于页面onload
,但如果在运行时使用它,它将替换整个文档。所以有人可以提供给我除document.write()
以外在JavaScript中打印字符串的方法吗?
答案 0 :(得分:0)
首先尝试:
document.getElementById("mytableid").innerHTML += "<tr><td>str</td></tr>";
但我建议如下:
var myTable = document.getElementById("myTableId");
var row = myTable.insertRow(-1);
var cell = roww.insertCell(-1);
cell.textContent="data1";
例如,如果你有
var data = [
[ "one" , "two" ],
[ "alpha", "betha" ],
[ "a", "b" ]
];
var myTable = document.getElementById("myTableId");
data.forEach(function(dataRows){
var row = myTable.insertRow(-1);
dataRows.forEach(function(dataCell){
var cell = row.insertCell(-1);
cell.textContent = dataCell;
});
});
答案 1 :(得分:0)
**<b>This code is working fine. I am using this code</b>**
//define json in string
var jsonPublishData ='[{"tag":"div","attr":[{"class":"box-footer"}],"child":"Hello"}]';
//convert json to html
var resp_html = json_to_html(jsonPublishData, true);
//define a variable and store html respons data in this variable
var publishButtonHTML= resp_html.outerHTML
//alert out
alert(publishButtonHTML);
//print out on console
console.log(publishButtonHTML);
// Start finction for JSON to HTML
function json_to_html(json_components, isDiv = false, finalHTML = "")
{
var jsoncompo = (isDiv) ? JSON.parse(json_components) : json_components;
var json_len = (jsoncompo).length;
if (finalHTML == "" && isDiv)
{
finalHTML = document.createElement("div");
}
for (var i = 0; i < json_len; i++)
{
var childele = '';
var html_components = jsoncompo[i];
var attributes_arr = html_components.attr;
finalHTML1 = createstructure(html_components.tag, attributes_arr, html_components.child);
finalHTML.appendChild(finalHTML1);
}
return finalHTML;
}
// End finction for JSON to HTML
// Start finction for create HTMLstructure from json
function createstructure(type, props, children) {
var el = document.createElement(type),
key;
for (key in props) {
var keyprops = props[key];
var hasOwn = Object.keys(keyprops);
for (var i = 0; i < hasOwn.length; i++)
{
el.setAttribute(hasOwn[i], keyprops[hasOwn[i]]);
}
}
if (typeof children != 'undefined') {
if (Array.isArray(children)) {
json_to_html(children, false, el);
} else {
textnode = document.createTextNode(children);
el.appendChild(textnode);
}
}
return el;
}
// Start finction for create HTMLstructure from json