我正在试验一个将节点填充到某个位置的Javascript函数。类似appendChild(document.getElementById("foo"))
。但是,我没有完全控制周围的代码,并且可能某些元素具有相同的ID。考虑以下几点:基于位置获取基于Javascript元素的元素节点
<div id="foo">
<span id = "bar">456</span>
<script type="text/javascript">document.write(document.getElementById("bar").innerText);</script>
</div>
<hr>
<div id="foo">
<span id = "bar">123</span>
<script type="text/javascript">document.write(document.getElementById("bar").innerText);</script>
</div>
在大多数浏览器,输出将是:
456 456
123 456
,而不是我想要的东西,这是
456 456
123 123
这个结果是完全不足为奇给我;我明白为什么会发生这种情况。我希望我可以做一个javascript调用更像
document.write(myscriptnode.parent.childnodes['bar'].innerText)
假设我没有控制权,除了脚本标记内容什么,有没有办法做到这一点?
div和span没有CSS。我不能添加它们,因为我是“假设我无法控制除脚本标记内容之外的任何内容”。 – Brian 2010-07-20 14:19:24
对不起,澄清一下,我应该说“jQuery允许您编写类似CSS的选择器语法”。请参阅http://api.jquery.com/category/selectors/ jQuery将执行您所需的操作,即node.parent()。children()...请参阅http://api.jquery.com/category/遍历/ 另一个JS框架,你可以看看是http://www.prototypejs.org/ – TimS 2010-07-20 14:32:08
@TimS:这并不告诉我我应该如何选择节点。我没有看到任何让我选择脚本节点的选择器。 – Brian 2010-07-20 14:42:47