【问题标题】:HTML tags get changed when assigning to innerHTML分配给 innerHTML 时,HTML 标记会发生变化
【发布时间】:2017-06-16 14:45:55
【问题描述】:

我有一个 XML,我正在使用 XSL 将它转换为 HTML。我的转换成功,我得到如下结果字符串:- `

<TABLE xmlns:msxsl="urn:schemas-microsoft-com:xslt" xmlns:xslscript="http://mycompany.com/mynamespace" border="0" width="100%">
   <TR align="center">
      <TD>
         <TABLE border="0" cellspacing="0" cellpadding="0" width="100%">
            <FORM action="jhk" method="get" id="frmMain" name="frmMain">
               <TR>
                  <TD class="tableBg">
                     <TABLE border="0" cellspacing="1" cellpadding="3" width="100%">
                        <TR class="mainListRow">
                           <TD colspan="7">
                              <TABLE width="100%" border="0" cellspacing="0" cellpadding="0">
                                 <TR>
                                    <TD class="ListTableTitle" width="12%" nowrap="nowrap">Select Value                    </TD>
                                 </TR>
                              </TABLE>
                           </TD>
                        </TR>
                        <TR width="100%">
                           <TD valign="top" width="100%">
                              <DIV id="listing" width="100%">
                                 <input type="hidden" id="keyField" value="partnerCd"/>
                                 <TABLE STYLE="background-color:white" id="tblList" border="0" bordercolor="#0099CC" cellspacing="0" width="100%">
                                    </THEAD>
                                    <tr>
                                       <TD align="center" width="8px" height="10px"/>
                                       <TD colspan="1">
                                          <table width="100%" border="0" cellpadding="0" cellspacing="0">
                                             <tr>
                                                <td><input type="text" class="text" name="searchFields" value=""/></td>
                                             </tr>
                                          </table>
                                       </TD>
                                       <TD colspan="1">
                                          <table width="100%" border="0" cellpadding="0" cellspacing="0">
                                             <tr>
                                                <td/>
                                                <td align="right"><input type="button" class="buttonsNewCancelDeleteClose" id="buttonsSearchId" name="buttonsSearch" value="Search" onclick="searchPaginated()"/></td>
                                             </tr>
                                          </table>
                                       </TD>
                                    </tr>
                                 </TABLE>
                              </DIV>
                           </TD>
                        </TR>
                     </TABLE>
                  </TD>
               </TR>
               <TR>
                  <td>
                     <table cellpadding="0" cellspacing="0" width="100%">
                        <tr class="tableFooter">
                           <td class="tableFooter" align="left" width="10%"/>
                           <TD class="tableFooter" id="tableFooter" width="90%" align="right"/>
                        </tr>
                     </table>
                  </td>
               </TR>
            </FORM>
         </TABLE>
      </TD>
   </TR>
</TABLE>

`

然后我将它分配给 Document 的 innerHTML.. 但表单标签在分配后关闭在同一行。如下所示

<FORM action="jhk" method="get" id="frmMain" name="frmMain"></FORM>

无法理解为什么标签会聚集。谁能帮忙。我找不到任何不匹配的地方。

谢谢

【问题讨论】:

  • 如果 HTML 无效,浏览器会做一些奇怪的事情。 HTML 是否有效?我感觉table 里面的form 标签看起来很狡猾。
  • 感谢您的回复,但问题与代码在 IE 中的工作方式相同。我只是在 chrome 中使用时遇到问题。
  • 当向浏览器展示无效的 HTML 时,所有的赌注都被关闭,每个浏览器的反应都不同,并尝试尽可能地进行调整。不要试图专注于为什么它在 Chrome 中不起作用,首先要确保您的初始 HTML 是有效的。

标签: javascript html xml xslt


【解决方案1】:

&lt;form&gt; 不能在 &lt;table&gt; 内。

将它放在&lt;table&gt; 周围或&lt;td&gt;

【讨论】:

  • 我一定会试试这个。但对我来说奇怪的是它在 IE 中的工作方式与在 chrome 中的工作方式相同。虽然在 IE 中转换是使用 transformNode 和 chrome 完成的,但我使用的是 XSLTProcessor。
【解决方案2】:

此外,您在示例 HTML 的第 24 行有一个杂散的&lt;/THEAD&gt; 标记。此杂散标记会导致标记无效,这可能会导致您看到的症状。

【讨论】:

  • 谢谢,这是我的错误,实际上这是一个大文件,我删除了一些多余的标签来给出这个想法。
猜你喜欢
  • 1970-01-01
  • 2019-10-29
  • 2019-07-17
  • 1970-01-01
  • 2015-08-26
  • 1970-01-01
  • 2018-01-16
  • 2020-11-17
  • 2011-07-18
相关资源
最近更新 更多