中间不要有回车等特殊字符
<input id="c" class="g"></input><DIV id="b" class="g">

解决方案 »

  1.   

    alert(document.getElementById("a").previousSibling.id);//可以
      alert(document.getElementById("c").previousSibling.id);//可以
      alert(document.getElementById("b").previousSibling.id);//不可以
      为什么啊,都有空格或回车什么的
      

  2.   

    就是挺奇怪的????
    为什么加了回车后,它把 回车符号,认为了一个 NODE ??
    下面的语句就可以得到 c 
    alert(document.getElementById("b").previousSibling.previousSibling.id);但是对于都是<DIV></DIV> 的标签组,就没有问题呢???
      

  3.   

    反正要用previousSibling我就觉得两个无素中间什么东西也没有才靠得住。
      

  4.   

    我的理解:回车也算是一个节点,至于<div>为什么可以,因为他本身就带有回车,所以他前面的节点可以找到,我想所有的节点都应该是这样,
      

  5.   

    通过nodeName可以显示你获取到对象的名称
    <HTML>   
      <HEAD>     
      <STYLE   type="text/css">  
    .g{top:0px;}
    </style>
      </HEAD>   
      <body>  <form>   
      <div id="d" class="g"></div>   
    <input id="c" class="g"></input>
      <DIV id="b" class="g">
      </DIV>
    <DIV id="a" class="g">
      </DIV> 
      </form>
    <script>
      alert(document.getElementById("b").previousSibling.nodeName);//为什么是undefined
    </script>
      </body>   
      </HTML>
      

  6.   

    能不能这样解释:
    因为HTML 是 XML 文档的子集, XML 都是树型结构的文档,
    因为你的<INPUT>标记出现的位置破坏了树型结构,才导致该问题的出现,
    如果把<input> 放进<div> 中就不会又问题了。