急急急,javascript中ie生成空格问题?<body>
<input type=button value=寻找 onclick="alert('--'+document.body.childNodes[1].nodeValue+'--')">
<input type=button value=寻找二 >
<button>aaaa</button>
</body>我只想问第一个input后面ie会生成一个空格的#text文本节点,弹出来的是(-- --)我用ie dom tree看过了,代码是:<BODY><INPUT onclick="alert('--'+document.body.childNodes[1].nodeValue+'--')" type=button value=寻找> <INPUT type=button value=寻找二><BUTTON>aaaa</BUTTON> </BODY>这个ie生成的文本节点的空格不是html的&nbsp;如果是的话,第一个input后面应该是&nbsp;也不是全拼全角的空格,如果是的话,应该是 口口 这样的空格;也不是键盘的空格,因为键盘的空格不能作为一个空文本节点,到底这个ie生成的文本节点的空格是什么形式的空格,请详细指教指教!

解决方案 »

  1.   

    是的,源码中所有标签只要没有紧挨在一起就会产生一个空的#text节点,清除办法可参见:www.jslab.org.cn resetChildNodes部分! 
    <div id="test" style="border:1px solid buttonface;">
        <p>p1 test</p> <p>test 2</p>
        <p>p2    test</p>
    </div><script type="text/javascript">
    function resetChildNodes(_elm){
        var _cn = _elm.childNodes,_nd = null;
        for(var i=0;i<_cn.length;i++)
            _nd = _cn[i];
            if(_nd.nodeType==3&&!(_nd.nodeValue.replace(/\s/g,''))){
                _elm.removeChild(_nd);
            }
        }
    }
    var obj = document.getElementById("test");resetChildNodes(obj);
    document.write('<p>test childNodes[iIndex]:<br/>');
    document.write(obj.childNodes[0].innerHTML+'<br/>');
    document.write(obj.childNodes[1].innerHTML+'<br/>');
    document.write(obj.childNodes[2].innerHTML+'<br/>');
    document.write('</p>');document.write('<p>test firstChild & lastChild:<br/>');
    document.write(obj.firstChild.innerHTML+'<br/>');
    document.write(obj.lastChild.innerHTML+'<br/>');
    document.write('</p>');
    </script>
      

  2.   

    ╭═══╮ ╭═══╮ ╭══════╮
    ╰╮ ╭╯ ╰╮ ╭╯ ╰╮ ╭══╮╰╮
      ║ ║   ║ ║   ║ ║  ╰╮╰╮
      ║ ║   ║ ║   ║ ║   ║ ║
      ║ ║   ║ ║   ║ ║   ║ ║
      ║ ║   ║ ║   ║ ║  ╭╯╭╯
      ║ ║   ║ ║   ║ ╰══╯╭╯
      ║ ║   ║ ║   ║ ╭═══╯
      ║ ║   ║ ║   ║ ║
      ║ ║   ║ ║   ║ ║
      ║ ║   ║ ║   ║ ║
      ╰╮╰╮ ╭╯╭╯   ║ ║
    sss    ╰╮╰═╯╭╯   ╭╯ ╰╮
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ss╰═══╯    ╰═══╯