2016-09-03 39 views
0

我有这段代码,它获取<li>元素中的一些链接,然后将它们的内容放入数组中。哪些工作正常。用换行符替换显示的数组逗号

HTML

<ul id="links"> 
    <li><a href="#" title="Open this form">Test 1</a></li> 
    <li><a href="#" title="Open this form">Test 2</a></li> 
    <li><a href="#" title="Open this form">Test 3</a></li> 
</ul> 

<div id="temporary-pool"></div> 

JS

var links = []; 

$("#links li").each(function() { 
    var rawLinks = $(this).html() 
    var textLinks = rawLinks.replace(/<a\b[^>]*>/i,"").replace(/<\/a>/i, ""); 

    links.push(textLinks); 
}); 

console.log(links);  

$("#temporary-pool").html(
    '<textarea id="clean-links">' 
     +links+ 
    '</textarea>' 
); 

不过,我想显示在<textarea>内容。当我只是打印出来,这显然输出为:

Test 1,Test 2,Test 3 

我想什么,是它的输出结果为:

Test 1 
Test 2 
Test 3 

我试着用正则表达式玩弄(我相信我需要用“ ”代替“,”),但没有成功。

+0

你打印一份列表,它应该工作:'links.join(“\ n”)' –

回答

3

这应做到:

$("#temporary-pool").html(
    '<textarea id="clean-links">' 
     +links.join("\n")+ 
    '</textarea>' 
); 

你可以找到更多信息关于join(...)HERE

,并简化代码的其他部分,你可以这样做:

$("#links li").each(function() { 
    links.push($(this).text()); 
}); 

信息关于jQuery.text()HERE

+0

真棒,干净,漂亮。你是一个拯救生命的人。正确地指出,感谢你的回答和建议。 – morgi

+0

@morgi我很高兴我能帮上忙。祝你好运。 – Titus

0

使用换行符和子串输出逗号,如

var links = [];

$("#links li").each(function() { 
    var rawLinks = $(this).html() 
    var textLinks = rawLinks.replace(/<a\b[^>]*>/i,"").replace(/<\/a>/i, ""); 

    links.push(textLinks.substring(0, textLinks.length-1) + "\n"); 
}); 

console.log(links);  

$("#temporary-pool").html(
    '<textarea id="clean-links">' 
     +links+ 
    '</textarea>' 
); 

假定逗号的原始字符串的最后一个字符是逗号,否则逗号从直接输出的阵列来。 在这种情况下,使它成为一个字符串:

var txtValue = ""; 
for(var i = 0;i<links.length;i++){ 
    txtValue = txtValue + links[i]; 
} 

$("#temporary-pool").html(
    '<textarea id="clean-links">' 
     +txtValue+ 
    '</textarea>' 
); 
+1

我想已经,它输出的换行符,但不会删除逗号。 – morgi