我有这样的结构:
<ul>
<li>text1</li>
<li>text2</li>
<li>text3</li>
</ul>
如何使用javascript或jQuery将文本作为数组?
['text1', 'text2', 'text3']
我的计划是将它组装成一个字符串,可能使用.join(', ')
,并以这样的格式获取它:
'"text1", "text2", "text3"'
答案 0 :(得分:135)
var optionTexts = [];
$("ul li").each(function() { optionTexts.push($(this).text()) });
......应该做的伎俩。要获得您正在寻找的最终输出,join()
加上一些连接将很好地完成:
var quotedCSV = '"' + optionTexts.join('", "') + '"';
答案 1 :(得分:69)
答案 2 :(得分:14)
在干净的javascript中:
var texts = [], lis = document.getElementsByTagName("li");
for(var i=0, im=lis.length; im>i; i++)
texts.push(lis[i].firstChild.nodeValue);
alert(texts);
答案 3 :(得分:14)
kimstik很接近,但并不完全。
以下是如何在方便的单行中进行的操作:
$.map( $('li'), function (element) { return $(element).text() });
这是jQuery的map函数的完整文档,它非常方便:http://api.jquery.com/jQuery.map/
完全回答,这是您正在寻找的完整功能:
$.map( $('li'), function (element) { return $(element).text() }).join(', ');
答案 4 :(得分:7)
var arr = new Array();
$('li').each(function() {
arr.push(this.innerHTML);
})
答案 5 :(得分:0)
您可以执行以下操作。 一行代码就足够了
let array = $('ul>li').toArray().map(item => $(item).html());
获取感兴趣的元素
生孩子
从toArray()方法获取数组
过滤出所需的结果
let array = $('ul>li').toArray().map(item => $(item).html());
console.log(array);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<ul>
<li>text1</li>
<li>text2</li>
<li>text3</li>
</ul>