我正在通过Javascript动态创建一个表,但我确实希望该表从页面右侧继续。手动执行此操作可使表继续运行,但是一旦将其馈入for
循环,则<td>
s将换行到呈现的HTML中的第二行,并在到达页面末尾时创建两个或更多表行。
<div id="panelindex" style="overflow:scroll;text-align:center;">
<table border="0">
<tr></tr>
</table>
</div>
它在自己的表内(无样式格式)。然后是Javascript:
var q = Math.floor((1/numpanels)*500);
if(q>50) q=50;
panelindex.innerHTML = "<table border='0'><tr>"
for(i=0; i<numpanels; i=i+1)
{
panelindex.innerHTML = panelindex.innerHTML + "<td><div id='panel" + i + "' onclick='jumppage(" + i + ")' style='float:left;text-align:center;margin:8px;border-width:3;border-color:white;border-style:none;'><a href='#" + i + "'><img src='thumbnails.php?image=blowem" + zeroFill(i,2) + ".gif&GIF&tw=128&th=128&quality=" + q + "'>\n" +
"<br />" + i + "</a></div></td>\n";
}
panelindex.innerHTML = panelindex.innerHTML + "</tr></table>"
你可能会注意到,有一个<div>
在<td>
,这是这样我就可以申请一个边界标记panel
。没有<div>
它,我似乎无法做到这一点,并且还有其他一些不良影响。有什么办法可以使所有<td>
s都排在一行而不是换成新行吗?
我想要的示例:http : //edwardleuf.org/comics/jwb/009-conmet
发生了什么:https : //jsfiddle.net/w4uh0a3j/7/
点击Show
链接。
innerHTML
不保存您分配给它的字符串值。
它将值解析为HTML,从中创建一个DOM,将其插入文档中,然后,当您读回它时,会将DOM转换回HTML。
这意味着您分配的字符串会受到错误恢复和规范化的影响。特别是,省略的结束标记是固定的。
panelindex.innerHTML = "<table border='0'><tr>"
console.log(panelindex.innerHTML);
<div id="panelindex" style="overflow:scroll;text-align:center;">
<table border="0"><tr>
</tr></table>
</div>
因此,当您开始向其添加更多数据时:
panelindex.innerHTML = panelindex.innerHTML + "<td>etc etc
您最终得到:
<table border="0"><tbody><tr></tr></tbody></table><td>etc etc
将数据存储在常规变量中。.innerHTML
完成完整的HTML后,才将其分配给。
更好的方法,那么这将是大约捣碎串在一起,试图建立HTML忘了(这很容易出错,尤其是一旦你开始处理那些需要HTML转义字符),使用DOM( ,createElement
,appendChild
等)来代替。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句