删除Javascript中的空白
这里是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
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:我嫉妒你;)谢谢你们所有人提供了非常有用的答案!这很有效!