【问题标题】:Render HTML Page渲染 HTML 页面
【发布时间】:2012-07-10 10:10:51
【问题描述】:

这是我的html页面。

<body>
<div id="form1">
    <root xmlns:NS='www.yembi.com'>
    <NS:ENTRY Action='Users'>
    <div class="colm1">
        <NS:DISPLAY datafield="FirstName"></NS:DISPLAY>             
    </div>
    <div class="colm2">
        <NS:Text datafield='FirstName'/>
    </div>
    <div class="colm1">
        <NS:DISPLAY datafield="MiddleName"></NS:DISPLAY>
    </div>
    <div class="colm2">
        <NS:Text datafield='MiddleName'/>
    </div>
    <div class="colm1">
        <NS:DISPLAY datafield="LastName"></NS:DISPLAY>
    </div>
    <div class="colm2">
        <NS:Text datafield='LastName'/>
    </div>
    <div class="colm1">
        <NS:DISPLAY datafield="Phone"></NS:DISPLAY>
    </div>
    <div class="colm2">
       <NS:Text datafield='Phone'/>
    </div>
    <div class="colm3">
        <NS:BUTTON ></NS:BUTTON>
    </div>
    </NS:ENTRY>
    </root>
</div>

我想把这个 html 放到一个临时变量中。所以尝试如下

var Text = $("#form1").html();

我正在获取完整的 html 内容,但有一些例外。 它不显示 div 属性中的双引号。

我得到以下输出:

<ROOT xmlns:NS='www.yembi.com'>
    <NS:ENTRY Action='Users'>
    <DIV class=colm1>
        <NS:DISPLAY datafield="FirstName"></NS:DISPLAY>             
    </DIV>
    <DIV class=colm2>  // Here it automatically removes the double quotes. how to retain this double quotes ?
        <NS:Text datafield='FirstName'/>
    </DIV>
    <DIV class=colm1>
        <NS:DISPLAY datafield="MiddleName"></NS:DISPLAY>
    </DIV>
    <DIV class=colm2>
        <NS:Text datafield='MiddleName'/>
    </div>
    <DIV class=colm1>
        <NS:DISPLAY datafield="LastName"></NS:DISPLAY>
    </DIV>
    <DIV class=colm2>
        <NS:Text datafield='LastName'/>
    </DIV>
    <DIVclass=colm1>
        <NS:DISPLAY datafield="Phone"></NS:DISPLAY>
    </DIV>
    <DIV class=colm2>
       <NS:Text datafield='Phone'/>
    </DIV>
    <DIV class=colm3>
        <NS:BUTTON ></NS:BUTTON>
    </DIV>
    </NS:ENTRY>
    </ROOT>

如上所述,它会自动删除 DIV 中的双引号。如何保留这个双引号??

【问题讨论】:

  • 它仍然是没有引号的有效 HTML。

标签: html


【解决方案1】:

我怀疑您使用的是 jQuery 或等效的:

请参阅文档中的此处: “此方法使用浏览器的 innerHTML 属性。某些浏览器可能不会返回与原始文档中的 HTML 源完全相同的 HTML。例如,如果属性值仅包含字母数字字符,Internet Explorer 有时会省略属性值的引号。”

http://api.jquery.com/html/

所以这真的取决于浏览器。您可以使用 javascript 正则表达式来确保引号在您需要的位置: Regex to put quotes for html attributes

【讨论】:

  • 感谢 mihaisimi...正则表达式为 html 属性添加引号 - 此链接工作正常.. :)