2013-05-27 18 views

回答

2

這聽起來像你想看起來像下面的標記結果:

<div>This is the new div</div> 
<div> 
    <script type="text/javascript" src="js/embed.js"></script> 
</div> 

如果是這樣的話,你將需要:

  1. 查找腳本標記src等於'js/embed.js'
  2. 選擇父(在div容器)
  3. 使用insertBefore()添加新的div

如果這一切屬實,代碼會是這個樣子:

var parent, 
    i = 0, 
    scripts = document.scripts, 
    newDiv =document.createElement('div'); 

newDiv.innerHTML = "This is the new div"; 

for (var i = 0; i < scripts.length; i++) { 
    if (scripts[i].getAttribute('src') === 'js/embed.js') { 
     parent = scripts[i].parentNode; 
     parent.parentNode.insertBefore(newDiv, parent) 
    } 
} 

jsFiddle

如果你想要你的標記是這樣的:

<div> 
    <div>This is the new div</div> 
    <script type="text/javascript" src="js/embed.js"></script> 
</div> 

然後用這個:

var i = 0, 
    scripts = document.scripts, 
    newDiv = document.createElement('div'); 

newDiv.innerHTML = "This is the new div"; 

for (i = 0; i < scripts.length; i++) { 
    if (scripts[i].getAttribute('src') === 'js/embed.js') { 
     scripts[i].parentNode.insertBefore(newDiv, scripts[i]) 
    } 
} 

fiddle

1

只需使用document.write()

document.write('<div></div>'); 

document.write()在它正在執行,在你的情況下,第一<div>中的位置寫入輸出。

+0

不會與XHTML工作,但在OP問題一般最好的解決方案。 – Tommi

1

下可能的工作:

<div id="mydiv"> 
</div> 

function addDiv() 
{ 
    document.getElementById("mydiv").innerHTML = "<div>some other text</div>" 
} 
0
document.querySelector("div script[src='js/embed.js']").parentElement.appendChild(document.createElement("div"));