代码之家  ›  专栏  ›  技术社区  ›  Kubi

DOM innerHTML不接受我的html数据

  •  -1
  • Kubi  · 技术社区  · 16 年前
        var popupcontent = myfunc(item.Id, i);
        tablepopup = document.createElement("table");
        tablepopup.innerHTML = popupcontent;
        highSlide.appendChild(tablepopup);
        tdAnkunft.appendChild(kirmiziOkLink);
        tdAnkunft.appendChild(highSlide);
        tableRow.appendChild(tdAnkunft);
    

    myfunc返回一个类似“table../table”的html表代码,但我得到一个错误:“htmlfile:Unknown runtime error” 有没有其他方法可以将我的字符串数据“popupcontent”解析为tablepopup?

    myfunc返回的示例html代码如下

    <table width="100%" border="0" cellspacing="1" cellpadding="2">
        <tr bgcolor="#FFFFFF" class="table_header" style="cursor: pointer;" onmouseover="this.bgColor='#EEEEEE';"
            onmouseout="this.bgColor='#FFFFFF';">
            <td bgcolor="#E4E4E4">
                Flug.
            </td>
            <td bgcolor="#E4E4E4">
                Flug Nr.
            </td>
            <td bgcolor="#E4E4E4">
                Flughafen Abflug
            </td>
            <td bgcolor="#E4E4E4">
                Datum
            </td>
            <td bgcolor="#E4E4E4">
                Abflug
            </td>
            <td bgcolor="#E4E4E4">
                Ankunft
            </td>
            <td bgcolor="#E4E4E4">
                C
            </td>
            <td bgcolor="#E4E4E4">
                S
            </td>
            <td bgcolor="#E4E4E4">
                &nbsp;
            </td>
        </tr>
    
    
    
    
    
    
    
        <tr bgcolor="#FFFFFF" onmouseover="this.bgColor='#EEEEEE';" onmouseout="this.bgColor='#FFFFFF';"
            style="cursor: pointer;">
            <td bgcolor="#FFFFFF" class="table_content" align="center">
                TK
            </td>
            <td class="table_content">
                351
            </td>
            <td class="table_content">
                Bremen - Frankfurt
            </td>
            <td class="table_content">
                13.05.2010
            </td>
            <td class="table_content" align="center">
                19:50
            </td>
            <td class="table_content" align="center">
                20:50
            </td>
            <td class="table_content" align="center">
                V
            </td>
            <td class="table_content" align="center">
                9
            </td>
            <td class="table_content" align="center">
                <img src="images/right.arrow.png" width="18" height="18" onclick="swapPlans('Bremen','349');">
            </td>
        </tr>
    </table>
    
    2 回复  |  直到 16 年前
        1
  •  2
  •   Jonathon Oates    16 年前

    你可以试试

    tablepopup.appendChild(document.createTextNode(popupcontent));
    

    作为另一种选择。

    从提供的代码来看,您的DOM树是:

    <tr>
        <td id="tdAnkunft">
            <unknown id="kirmiziOkLink">
            <table id="tablepopup">
                popupcontent
            </table>
        </td>
    </tr>
    

    也许可以确定一下 popupcontent 返回有效的 <tr><td></td</tr> 树。

    myfunc return 这正是您在原始[编辑]帖子中提供的代码,那么您的DOM树似乎是无效的,因为 <table id=tablepopup"> 包含无效代码。您的DOM树如下所示:

    <table id="popuptable">
        <table>
            <tr>
                <td>
                    Flug.
                </td>
                <td>
                    Flug Nr.
                </td>
                <td>
                    Flughafen Abflug.
                </td>
    ...
    ...
                <td>
                    9.
                </td>
                <td>
                    <img />
                </td>
            </tr>
        </table>
    </table>
    

    table 在一个 桌子 这是无效的HTML。这很可能是你的问题。

        2
  •  2
  •   Gordon Gustafson    16 年前

    innerHTML需要一个包含元素的新html的字符串。 myfunc() 可能返回了一些无法解析为html的内容。试着传递一些像 tablepopup.innerHTML = "<em>hi!</em>"; 你能帮我发邮件吗?

    另外,“有效的html表代码”是什么意思?如果你在期待 .. 要退出一个目录级别,它不会像那样工作。您没有指定html文件在计算机上的位置,而是以字符串形式指定实际的html。如果您想从一个文件url中包含html,那么您需要一种像PHP这样的服务器端语言。