Javascript js innerHTML置换

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]) {

我正在尝试使用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>";
}
结果令人失望

<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>