首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >js innerHTML位移

js innerHTML位移
EN

Stack Overflow用户
提问于 2020-03-09 14:56:24
回答 1查看 82关注 0票数 1

我正在尝试使用js加载数据。

我创建了一个函数

代码语言:javascript
运行
复制
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>";
}

我的数据

代码语言:javascript
运行
复制
 var multiques=[
                        ["logic","number","36",""],
                        ["text","text","35",""],
                        ["number","number","37",""]
        ];

结果令人失望

代码语言:javascript
运行
复制
<div id="multi"><table></table>logic<input type="number" class="nummulti"></div>

table在循环结束前就关闭了,trtd没有打印,所以有一些很奇怪的东西,希望有人能帮我

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-03-09 15:11:52

您可以使用.innerHTML作为某种一致的字符串变量,但它是HTML的设置器(参见DOM)。

这意味着每次设置innerHTML时,即使没有关闭标记,也会解析html字符串。这导致了你的错误。你不应该那样使用innerHTML

如果您不想使用document.createElement()Element#appendChild(),您需要独立于它自己的变量生成html字符串,然后将innerHTML设置为该字符串,这样就可以对其进行解析。

这应该能解决这个问题:

代码语言:javascript
运行
复制
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;

}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60603146

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档