繁体   English   中英

只插入元素后面的HTML标签?

[英]Insert just opening HTML tags after an element?

我想在页面上的H1元素之后插入几个打开的DIV标记,而不插入相应的结束标记(因为结束标记包含在我无法访问的包含的页脚文件中)。

即现有代码:

<body>
<h1>Heading One</h1>
... page content...
</div>
</div>
</body>

新代码:

<body>    
<h1>Heading One</h1>
<div id="foo">  
<div id="baa">  
... page content...
</div>
</div>
</body>

DOM方法将div作为完整(闭合)元素插入,'createTextNode'插入转义字符,'innerHTML'需要插入元素。 甚至试图用document.write插入一个脚本元素,没有任何运气。

任何想法(jQuery会没事)?

更新以下工作:

document.body.innerHTML = document.body.innerHTML.replace('</h1>','</h1><div id="foo"><div id="baa">')

正如Asad所指出的那样,解决方案(现在看来显而易见)是在HTML而不是DOM方法上使用字符串方法。

如果您正在处理DOM操作,请使用DOM操作方法。 如果您正在处理HTML操作,请使用字符串操作方法。

h1.parentElement.innerHTML = h1.parentElement.innerHTML.replace("<h1>Heading One</h1>","<h1>Heading One</h1><div><div>");

我认为这将回答你的问题,它是关于有效的XML形成。

http://www.w3schools.com/xml/xml_syntax.asp

忘记DOM方法,使用.replace()将其作为字符串插入。

你的方法根本就是错误的。 浏览器在看到DOM时解析它,并自动关闭任何应该关闭的标记。 使用JavaScript只能插入开始标记是不可能的。

您说“结束标记包含在我无法访问的包含的页脚文件中。” 将忽略尚未打开的已关闭标记,因此就DOM解析器而言,这些结束标记不存在。

您的解决方案是:

  1. 将开头标记放在标题中,或者放在服务器端的其他位置,或者
  2. 使用JavaScript在所需的div中抓取所有以下DOM元素,包括页脚和.wrap()

这种做法似乎有点不正统,但也许这样的事情会有所帮助。

现有的HTML

<h1 id="testH1">Test H1</h1>
<div id="existingDiv">
    <div id="existingDivContent">Existing Div Content</div>
</div>

新的HTML

<h1 id="testH1">Test H1</h1>
<div id="newDiv">
    <div id="existingDiv">
        <div id="existingDivContent">Existing Div Content</div>
    </div>
</div>

JS

javascript相当简陋,但我认为这个概念可以应用于安全,正确地实现你的目标。

$(document).ready(function() {
    //-- parent node you wish to copy
    var existingDiv = $('#existingDiv');

    //-- new parent div node
    var newDiv = $('<div id="newDiv">');

    //-- where we want to insert the new parent node
    var testH1 = $('#testH1');

    //-- stuff our previous parent node into our new parent node
    newDiv.html(existingDiv);

    //-- insert into the DOM
    testH1.after(newDiv);

});

http://jsfiddle.net/8qzvN/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM