str = str.replace(/ /g, ' '); //匹配的全局标志 g 不能少

解决方案 »

  1.   

    <div id="content">...</div>
    <script>
    content.innerText=content.replace(/ /gi,"&nbsp;");
    </script>
      

  2.   

    好像不行呀!
    <div id="c">
    一个 两个  三个   四个    五个
    </div>
    <script>
    alert(document.all.c.innerHTML);
    document.all.c.innerHTML=document.all.c.innerHTML.replace(/ /gi,"&nbsp;");
    alert(document.all.c.innerHTML);document.all.c.innerHTML好像默认已经把空格压缩了,有什么好办法吗?
      

  3.   

    楼主,innerHTML会将&nbsp;转换成空格,除非你换成"  document.all.c.innerText  "这样就能显示出&nbsp;,但是如果里面有HTML标记的话就会有问题.不知道你为什么要这么做??
      

  4.   

    我要做的是,我从数据库里取出一篇文章
    考虑到速度的问题,我不想在后台把空格转成&nbsp;
    所以我直接显示在前台交给JS处理
    但浏览器会忽略空格,这样文章就没层次感了,但又不想用<pre>所以只好用JS把空格转成&nbsp;
      

  5.   

    楼主的意思是指html里的"一个 两个  三个   四个    五个"中有很多连续空格,而转化后只剩下一个了是不是?就是你说的压缩了?这可能是浏览器解释的问题,它会自动把很多连续空格替换成一个不知我的看法大家认为对不对
      

  6.   

    最好是往数据库里存的时候就把空格换成&nbsp;否则就取出来后在后台转或者取出来后先存在一个隐藏控件里,再用脚本处理后送给div,这样它就不会弄丢空格了
      

  7.   

    用一个window.onload事件,等页面加载完成后取出隐藏控件的值(就是你的文章),替换空格后送给div
      

  8.   

    楼主必须在把字符写入到页面之前进行替换,否则html中就只剩一个空格了
    <div id="c">
    一个 两个  三个   四个    五个
    </div>
    <script>
    var t1="一个 两个  三个   四个    五个"
    alert(document.all.c.childNodes[0].length);
    document.all.c.innerHTML=t1.replace(/\s/gi,"&nbsp;");
    alert(document.all.c.innerHTML);
    </script>