我刚刚查了MSDN,<input type="text"> 并没有 length 属性,所以,试下将 n.length 替换为 n.innerText.length / n.value.length 。

解决方案 »

  1.   

    var m = n.firstChild; m!=null;m=m.nextSibling
    m=m.nextSibling ???
      

  2.   

    to snmr_com(麒麟厍人) ( ): 
    m=m.nextSibling不行吗???to Amwpfiqvy(侠客行) ( ):
    我不明白您是什么意思?我刚开始看DOM :)
      

  3.   

    to Amwpfiqvy(侠客行) ( ):我改了,但是一样有错误
      

  4.   

    m=m.nextSibling在m变换的过程中必然会遇到找不到对象的,你想想吧……
      

  5.   

    我能想到的修改就那两种方式了,或者这样改,两种合在一起:if(n.nodeType==3)
    {
    if( n.value )
     return n.value.length;
    if( n.innerText )
     return n.innerText.length;
    return 0;
    }如果都还不行的话,我也没办法了。
    会不会内在溢出了?这个递归一般都很深的哦。
      

  6.   

    按楼上的说法,再这样改:if( n.childNodes )
    {
    for( var i = 0; i < n.childNodes.length; i++ )
     {
      numchars += countCharacters(n.childNodes[i]);
     }
    }
      

  7.   

    to snmr_com(麒麟厍人) :
    :)这是javaScript权威指南上的代码, 我没怀疑过其是错的
      

  8.   

    ff报错是这样的Error: countCharacters is not defined
    似乎是你拼错了?
    当然证明我前面也说错了,;)
      

  9.   

    snmr_com(麒麟厍人)告诉我吧~!~ 我想下个,谢谢