2012-02-09 85 views
9

如何找出<script>所在的元素?
举个例子,如果让我想改变这一些更现代的借此Javascript中的当前元素是什么?

<div> 
<script type="text/javascript"> 
    var time = new Date(), hrs = time.getHours(), min = time.getMinutes(); 
    document.write('It is '+hrs+":"+(min<10?'0':'')+min); 
</script> 
</div> 

然后,我怎么能找到我们在什么元素?
所以我想写点什么,比如jQuery的

$(thisdiv).html('It is '+hrs+":"+(min<10?'0':'')+min); 

,但我怎么得到thisdiv
是的,我知道,我可以在上面放一个ID,但是我觉得这不是必要的。浏览器知道我们在哪里,否则它甚至不能执行document.write!

那么,建议?我搜索了,但找不到它。它是如此简单,我忽略了明显的?

回答

20

脚本在外观文件中的顺序执行。遇到一个脚本标签的内容,所以最后的<script>元素总是当前的元素。

代码:

<div> 
    <script> 
    var scriptTag = document.getElementsByTagName('script'); 
    scriptTag = scriptTag[scriptTag.length - 1]; 

    var parent = scriptTag.parentNode; 
    </script> 
</div> 
+0

+ 1,我不能相信我忽略了那个相当基本的概念:( – danjah 2012-02-09 11:35:35

+0

+1,优雅的解决方案。 – osahyoun 2012-02-09 11:39:26

+0

谢谢!我还没有意识到这一点最新的脚本在执行过程中是列表中的最后一个,因此这是我寻找的解决方案。作为优点,它适用于我测试过的所有浏览器,甚至是Netscape 6.(是的,我彻底如此) – 2012-02-09 12:58:31

0
$('script#some_id').parent().html('blah blah'); 
+2

*是的,我知道,我可以把一个ID就可以了,但是我有一种感觉,没有必要。* – 2012-02-09 11:28:46

+0

Lister先生的确提到了不给剧本一个ID,以前是因为我在寻找类似的解决方案,因为我有很多sc在一个需要知道“它们在哪里”的文档中,最好的办法是在脚本块中设置一个唯一的随机变量,以便在其他脚本中标识访问权限(http://stackoverflow.com/questions/3057628 /如何对自我认同最位置-A-脚本标签,在最DOM的)。所以,也许身份证的方式去...热切地看你的Q. – danjah 2012-02-09 11:31:36

0

试试这个

<div id="mydiv"> 
<script type="text/javascript"> 
    var time = new Date(), hrs = time.getHours(), min = time.getMinutes(); 
    document.getElementById('mydiv').innerHTML = 'It is '+hrs+":"+(min<10?'0':'')+min; 
</script> 
</div> 
+1

*是的,我知道,我可以把一个身份证上,但我有这种感觉,这是没有必要的* – 2012-02-09 11:28:57

+0

哦对不起,我没有得到的说法,我认为罗布W先生是比较接近你的解决方案 – 2012-02-09 11:44:29

1

火狐:

document.currentScript.parentElement 

铬:

document.scripts.length