我在的情况下,似乎我必须在JavaScript库文件撰写使用。 该脚本必须知道脚本定义的区域的宽度。 然而,剧本并没有在这方面的任何标签的任何显性知识。 如果有一个div的显性知识那么这将是这么简单:
<div id="childAnchor"></div>
<script ref...
//inside of referenced script
var divWidth = $("#childAnchor").width();
</script>
因此,所引用的脚本里面,我想使用document.write是这样做的:
<script ref...
//inside of referenced script
var childAnchor = "z_87127XNA_2451ap";
document.write('<div id="' + childAnchor + '"></div>');
var divWidth = $("#" + childAnchor).width();
</script>
不过,我真的不喜欢这个文件撰写的实现。 是否有任何替代这里使用document.write? 我不能简单地用窗口的原因是,这是一个是主视图页面内呈现一个视图内。 窗口将无法正常得到嵌套的区域宽度。
该地区是相当多的在这里:
<body>
<div>
<div>
<div>
AREA
该地区有没有任何其他的div的知识。
这只是发生在我身上,我记得你的问题:脚本代码可以找到脚本块是在,所以你可以从那里遍历DOM。 当前的脚本块将是(代码运行时,DOM仍然被解析)在此刻的DOM的最后一个。
通过查找当前脚本块,你可以找到它的父元素,任意位置添加新的元素:
<!doctype html>
<html>
<head>
<style>
.parent .before { color: red; }
.parent .after { color: blue; }
</style>
</head>
<body>
<script></script>
<div class="parent">
<span>before script block</span>
<script>
var s = document.getElementsByTagName('script');
var here = s[s.length-1];
var red = document.createElement("p");
red.className = 'before';
red.innerHTML = "red text";
here.parentNode.insertBefore(red, here);
var blue = document.createElement("p");
blue.className = 'after';
blue.innerHTML = "blue text";
here.parentNode.appendChild(blue);
</script>
<span>after script block</span>
</div>
<script></script>
</body>
</html>
http://jsfiddle.net/gFyK9/2/
请注意“蓝色文本”跨度将之前插入了“后脚本块”跨度。 这是因为“后”跨度不会在DOM目前存在appendChild
被调用。
但是有一个非常简单的方法,使这一失败 。
没有办法,这种方法。 这是该脚本可以找到元素的宽度,它是嵌套在不知道有关它加载到DOM 东西的唯一途径。
使用document.write()
适当使用时是合法的。 虽然,追加到DOM的新元素是优选的,它并不总是可用选项。
如果你知道哪些子元素是你可以用参数n个子jQuery中。 否则你会需要通过他们与每一个迭代()
创建并追加像这样的孩子:
var el = document.createElement('div');
el.id='id';
document.body.appendChild(el);
但是我真的不知道你想和这个做什么有什么的宽度是什么,它可能会返回0。