我正在尝试使用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])
{
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>";
}我的数据
var multiques=[
["logic","number","36",""],
["text","text","35",""],
["number","number","37",""]
];结果令人失望
<div id="multi"><table></table>logic<input type="number" class="nummulti"></div>table在循环结束前就关闭了,tr和td没有打印,所以有一些很奇怪的东西,希望有人能帮我
发布于 2020-03-09 15:11:52
您可以使用.innerHTML作为某种一致的字符串变量,但它是HTML的设置器(参见DOM)。
这意味着每次设置innerHTML时,即使没有关闭标记,也会解析html字符串。这导致了你的错误。你不应该那样使用innerHTML。
如果您不想使用document.createElement()和Element#appendChild(),您需要独立于它自己的变量生成html字符串,然后将innerHTML设置为该字符串,这样就可以对其进行解析。
这应该能解决这个问题:
function loadIFmulti() {
var html="<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")
{
html +="<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")
{
}
}
}
}
}
}
html += "</table>";
var area = document.getElementById("multi");
area.innerHTML = html;
}https://stackoverflow.com/questions/60603146
复制相似问题