我有以下页面:
<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
答案 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;