删除Javascript中的空白

删除Javascript中的空白,javascript,whitespace,Javascript,Whitespace,这里是Javascript的超级新手。我有一个空白的问题,我希望有人能帮助我 我有一个函数如下所示: function createLinks() { var i = 0; tbody = document.getElementsByTagName('tbody')[3]; console.log('test order ID: '+document.getElementsByTagName('tbody')[3].getElementsByTagName('tr')[0

这里是Javascript的超级新手。我有一个空白的问题,我希望有人能帮助我

我有一个函数如下所示:

function createLinks()  
  {
  var i = 0;
  tbody = document.getElementsByTagName('tbody')[3];
    console.log('test order ID: '+document.getElementsByTagName('tbody')[3].getElementsByTagName('tr')[0].getElementsByTagName('td')[1].textContent.replace(/^\s+|\s+$/g,''))
  trs = tbody.getElementsByTagName('tr');
console.log('trs.length = '+trs.length);
  for (i=0;i<trs.length;i++)
  {
orderId = trs[i].getElementsByTagName('td')[1].textContent.replace(/^\s+|\s+$/g,'');
    console.log('order: '+orderId);

hrefReturn = 'https://www.example.com/example.html?view=search&range=all&orderId='+orderId+'+&x=13&y=17';
linkReturn = '<a href='+hrefReturn+'>'+orderId+'</a>';
    console.log(linkReturn);

trs[i].getElementsByTagName('td')[1].innerHTML = linkReturn;

  }
}
"XXXXXXXXX"
"   
      XXXXXXXXXX
                  "
因此,与其像应该的那样存储变量,不如这样:

function createLinks()  
  {
  var i = 0;
  tbody = document.getElementsByTagName('tbody')[3];
    console.log('test order ID: '+document.getElementsByTagName('tbody')[3].getElementsByTagName('tr')[0].getElementsByTagName('td')[1].textContent.replace(/^\s+|\s+$/g,''))
  trs = tbody.getElementsByTagName('tr');
console.log('trs.length = '+trs.length);
  for (i=0;i<trs.length;i++)
  {
orderId = trs[i].getElementsByTagName('td')[1].textContent.replace(/^\s+|\s+$/g,'');
    console.log('order: '+orderId);

hrefReturn = 'https://www.example.com/example.html?view=search&range=all&orderId='+orderId+'+&x=13&y=17';
linkReturn = '<a href='+hrefReturn+'>'+orderId+'</a>';
    console.log(linkReturn);

trs[i].getElementsByTagName('td')[1].innerHTML = linkReturn;

  }
}
"XXXXXXXXX"
"   
      XXXXXXXXXX
                  "
它的存储方式如下:

function createLinks()  
  {
  var i = 0;
  tbody = document.getElementsByTagName('tbody')[3];
    console.log('test order ID: '+document.getElementsByTagName('tbody')[3].getElementsByTagName('tr')[0].getElementsByTagName('td')[1].textContent.replace(/^\s+|\s+$/g,''))
  trs = tbody.getElementsByTagName('tr');
console.log('trs.length = '+trs.length);
  for (i=0;i<trs.length;i++)
  {
orderId = trs[i].getElementsByTagName('td')[1].textContent.replace(/^\s+|\s+$/g,'');
    console.log('order: '+orderId);

hrefReturn = 'https://www.example.com/example.html?view=search&range=all&orderId='+orderId+'+&x=13&y=17';
linkReturn = '<a href='+hrefReturn+'>'+orderId+'</a>';
    console.log(linkReturn);

trs[i].getElementsByTagName('td')[1].innerHTML = linkReturn;

  }
}
"XXXXXXXXX"
"   
      XXXXXXXXXX
                  "
这又一次扼杀了联系


有人能解释一下这里发生了什么,我怎么能解决它吗?提前谢谢

要去除周围的所有空白,可以使用标准的
.trim()
方法

var myString = "                \n               XXXXXXX           \n         ";
myString = myString.trim();
您可以去掉所有的前导和尾随,并将内部空白压缩到一个空格,就像在HTML呈现中通常做的那样,如下所示

var myString = "    \n    XXXX  \n     YYYY    \n   ";
myString = myString.replace(/\s+/g, " ").trim();
另外,请参见下面的tharrison评论

(尽管我的
/\s+/g
模式与嵌入的
\n
换行符配合得很好)



治疗IEHIya-如果您可以将其屏蔽,这将是一件好事,或者这可能有助于欢呼,作为替代,添加“m”标志以使模式跨越多行,例如…
。替换(/^\s+\s+$/gm,)值得注意<代码>修剪()
是ES5中唯一的标准,IE<9中不支持。@Matt-是的,aaaugh!我很少想到IE的局限性,因为我可以要求浏览器升级和/或拒绝支持不兼容的浏览器。@StephenP:我嫉妒你;)谢谢你们所有人提供了非常有用的答案!这很有效!