代码之家  ›  专栏  ›  技术社区  ›  Brian

基于位置的Javascript元素获取元素节点

  •  1
  • Brian  · 技术社区  · 15 年前

    我正在试验一个Javascript函数,它将节点填充到一个位置。有点像 appendChild(document.getElementById("foo"))

    <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
    

    document.write(myscriptnode.parent.childnodes['bar'].innerText)
    

    2 回复  |  直到 15 年前
        1
  •  0
  •   TimS    15 年前

    不如使用jQuery这样的JavaScript库,它允许您在getElementById的insead中编写类似CSS选择器的语法,并且还有一些有用的helper方法,比如parent()。

    http://jquery.com/

        2
  •  0
  •   Brian    15 年前

    这里有一个令人难以置信的解决这个问题的方法:与其尝试获取当前节点,不如创建一个具有任意ID的新节点,然后在完成后删除它。

    <div id="foo">
    <span id = "bar">456</span>
    <script type="text/javascript">
        document.write('<span id = "bfrogtmp"></span>');
        var y = document.getElementById("bfrogtmp");
        document.write(y.parentNode.children['bar'].innerHTML);
        y.parentNode.removeChild(y);
    </script>
    </div>
    
    <hr>
    
    <div id="foo">
    <span id = "bar">123</span>
    <script type="text/javascript">
        document.write('<span id = "bfrogtmp"></span>');
        var y = document.getElementById("bfrogtmp");
        document.write(y.parentNode.children['bar'].innerHTML);
        y.parentNode.removeChild(y);
    </script>
    </div>