关于javascript:获取脚本标记所在的DOM元素

Get DOM element where script tag is

本问题已经有最佳答案,请猛点这里访问。

我需要编写一个脚本,该脚本将使用document.write生成一些输出,但我需要知道它包含哪些元素,例如:

1
2
3
4
5
6
<p>

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

</p>

我需要一个P标签的参考…

谢谢!


在运行脚本时,文档仅部分加载。因此,脚本元素将是文档中的最后一个节点:

1
2
3
4
5
6
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


示例:http://jsfiddle.net/nqn3s/

1
2
3
4
5
6
7
8
9
10
11
12
<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";
   

</p>


为什么不在相关的P标签上加一个ID?

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

</p>

然后,您可以执行getElementById("desiredTag")$("#desiredTag")