function jtrim(str){
rvalue=str; rl=rvalue.length;
v_l=0;v_r=rl; for (i=0;i<rl;i++){
if (rvalue.charAt(i)!=" "){ v_l=i;i=rl;}
} for (i=(rl-1);i>=0;i--){
if (rvalue.charAt(i)!=" "){ v_r=i;i=0;}
}
rvalue=rvalue.substr(v_l,(v_r-v_l)+1)
if (rvalue.charAt(0)==" "){
rvalue=""
}
return rvalue}

解决方案 »

  1.   

    写得太繁了,所以大家回帖不多。你有两处错误,一是忘了JS中String按值传递;二、正则漏了\xa0。
    将你的函数替换为下面的,试验一下:
    function selectDqdw(field) {  
        var obj0 = field.parentNode.previousSibling.childNodes[0];
        var obj1 = field.parentNode.nextSibling.childNodes[0];
        if (field.checked && obj0 && obj1 ) {
           document.all.dqdwdm.value = obj0.nodeValue;
           document.all.dqdwmc.value = obj1.nodeValue.replace(/^[\s\xa0]*|[\s\xa0]*$/g, "") }
        else {
           document.all.dqdwdm.value = "";
           document.all.dqdwmc.value = "";
        }
    }
      

  2.   

    另外提请你注意:你原来的正则/(^\s*)|(\s*$)/g中的括号不是必须的,在正则中增加多余的括号,正则在匹配时,要有多余的存储动作,而且,一旦需要向后引用\1、\2等,容易引起混乱,因此,正则中能不要括号就不要用。应去掉括号改成: /^\s*|\s*$/g。