簡體   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