Access元素,包含当前的<script> </script>

时间:2012-04-12 15:51:19

标签: javascript jquery

我有以下页面:

<div><script>AddSomeContent(??, 1)</script></div>
<div><script>AddSomeContent(??, 2)</script></div>

我需要将??替换为周围的<div> DOM对象,因此函数AddSomeContent可以修改它。有没有机会这样做?

在做出任何其他评论之前:我没有任何其他选择。我已经尝试破解现有的一些页面了,我唯一可以控制的就是<script>的内容。

我正在使用jquery,但我可以改变它。

编辑:澄清。 AddSomeContent看起来像:

function AddSomeContent(somediv, parameter)
{
     $(somediv).append('there goes some data, that I dynamically create from some stuff depending on the parameter');
}

我想先将div包含在parameter = 1,第二个div parameter=2

2 个答案:

答案 0 :(得分:4)

你可以试试这个,虽然这有点像黑客:

(function() {
  var scr = document.getElementsByTagName('script'),
      parent = scr[scr.length - 1].parentNode;
  // parent is the parent node of the last script on the page
})();

如果你有<script>标签中的代码,那么当它运行时,页面上的最后一个脚本将是包含它的那个。

答案 1 :(得分:1)

我从前一个问题中记得这一点。对于每个处理的脚本,页面上的脚本数量增加1,并按顺序处理它们。所以这个函数将得到当前的脚本号:

function countScripts() {
    return document.scripts.length;
}

然后你可以去获取该脚本的parentNode:

var thisScriptParent = document.scripts[countScripts()].parentNode;