Javascript js innerHTML置换
我正在尝试使用js加载数据Javascript js innerHTML置换,javascript,html,Javascript,Html,我正在尝试使用js加载数据 我创建了一个函数 function loadIFmulti() { var area= document.getElementById("multi"); area.innerHTML="<table>"; for(var i =0;i<multiLink.length;i++) { if(multiLink[i][0]==ques[current][2]) {
我创建了一个函数
function loadIFmulti() {
var area= document.getElementById("multi");
area.innerHTML="<table>";
for(var i =0;i<multiLink.length;i++)
{
if(multiLink[i][0]==ques[current][2])
{
for(var j=1;j<multiLink[i].length;j++)
{
for(var x=0;x<multiques.length;x++)
{
if(multiques[i][j]==multiques[x][2])
{
if(multiques[x][1]=="number")
{
area.innerHTML +="<tr><td>"+multiques[x][0] +"</td><td><input type=\"number\" class=nummulti></td></tr>";
}
else if(multiques[x][1]=="text")
{
}
else if(multiques[x][1]=="listoption")
{
}
}
}
}
}
}
area.innerHTML += "</table>";
}
结果令人失望
<div id="multi"><table></table>logic<input type="number" class="nummulti"></div>
逻辑
table
在循环完成之前关闭,tr
和td
没有打印,因此有一些非常奇怪的东西,希望任何人都能帮助我您使用.innerHTML
作为某种一致的字符串变量,但它是HTML标记的设置器(请参阅DOM)
这意味着每次设置innerHTML
,html字符串都会被解析,即使标记没有关闭。那是你犯错误的原因。你不应该像那样使用innerHTML
如果不想使用document.createElement()
和Element#appendChild()
,则需要生成独立于自身变量的html字符串,然后将innerHTML
设置为该字符串,以便对其进行分析
这应该可以解决问题:
函数loadIFmulti(){
var html=“”;
对于(var i=0;i请创建一个简化的工作示例来演示您的问题,当前JS中有许多未知变量。请添加您期望的输出。这不是您要求的,但我建议您尝试使用document.createElement()
和appendChild()
而不是生成字符串。@Walk-字符串连接不是更快吗?@Zera它更快,但是createElement
除了速度之外还有很多优点。我个人不会将其用于动态内容。
<div id="multi"><table></table>logic<input type="number" class="nummulti"></div>