2011-08-03 105 views
7

我需要编写将使用文件撰写产生一些输出的脚本,但我需要知道它是装的是什么元素,例如:获取DOM元素其中,script标签

<p> 
    paragraph 1 
    <script src="test.js" type="text/javascript"></script> 
</p> 

我需要得到一个参考p标签...

谢谢!

+1

在test.js任何文件撰写的呼叫将在准确位置脚本标记是产生它们的输出。除非你想在'段落1'文本之前插入文本... –

+0

我知道,但我需要知道p标签的内容来写输出... – Gustav

+0

在jquery中,像'$(“脚本[@ src ='test.js']“)。parent('p')'可以做到这一点。 –

回答

11

在脚本运行的时候,该文件是仅部分地加载。所以,你的脚本元素将在文档中的最后一个节点:

var target = document.documentElement; // start at the root element 
while (target.childNodes.length && target.lastChild.nodeType == 1) { // find last HTMLElement child node 
    target = target.lastChild; 
} 
// target is now the script element 
alert(target.parentNode); // this is p 
+0

谢谢!这就是我所需要的 – Gustav

+5

然而,这并非总是如此。在现有文档中插入新的'

-1

为什么不直接在相关的p标签上放一个id?

<p id="desiredTag"> 
    paragraph 1 
    <script src="test.js" type="text/javascript"></script> 
</p> 

然后,你可以做一个getElementById("desiredTag")$("#desiredTag")

+2

如果您不能将id/class添加到父级,内容可能是动态的,否则它将是最简单的修复。 –

8

实施例:http://jsfiddle.net/NqN3S/

<p> 
    paragraph 1 
    <script id="test" type="text/javascript"> 
     var scpt = document.getElementById("test"); 
     var p = scpt.parentNode; 
     p.removeChild(scpt); 
     alert("old content: " + p.innerHTML); 
     p.innerHTML = "some new content"; 
    </script> 
</p>