Javascript jQuery以字符串格式抓取标记内的文本并添加到数组中
我有一根像Javascript jQuery以字符串格式抓取标记内的文本并添加到数组中,javascript,jquery,Javascript,Jquery,我有一根像 Lorem Ipsum is simply dummy text of the printing and typesetting industry.<grab> First Item</grab>Lorem Ipsum is simply dummy text of the printing and typesetting industry.<grab>Second Item</grab>Lorem Ipsum is simpl
Lorem Ipsum is simply dummy text of the printing and typesetting
industry.<grab> First Item</grab>Lorem Ipsum is simply dummy text of
the printing and typesetting industry.<grab>Second Item</grab>Lorem
Ipsum is simply dummy text of the printing and typesetting
industry.<grab>Third Item</grab>Lorem Ipsum is simply dummy text of
the printing and typesetting industry.
Lorem Ipsum只是印刷和排版的虚拟文本
工业。第一个ItemLorem Ipsum只是
印刷和排版业。第二项
Ipsum只是印刷和排版的虚拟文本
第三项Lorem Ipsum只是
印刷和排版业。
现在我需要获取…
标记之间的所有文本,并将它们添加到一个数组中。我试过了,但没有成功
var data='Lorem Ipsum只是印刷和排版行业的虚拟文本。第一个ItemLorem Ipsum只是印刷和排版行业的虚拟文本。第二个ItemLorem Ipsum只是印刷和排版行业的虚拟文本。第三个ItemLorem Ipsum只是印刷和排版行业的虚拟文本。”;
var数组=$('').map(函数(){
返回$(this.text();
}).get();
$('body')。追加(数组)代码>
这些实际上不是DOM元素,所以regex可能会帮助您
var data='Lorem Ipsum只是印刷和排版行业的虚拟文本。第一个ItemLorem Ipsum只是印刷和排版行业的虚拟文本。第二个ItemLorem Ipsum只是印刷和排版行业的虚拟文本。第三个ItemLorem Ipsum只是印刷和排版行业的虚拟文本。”;
var r=/(.*)/g;
var grabs=data.match(r).map(函数(x){
返回x.替换(r,$1');
});
控制台日志(抓取)代码>尽管正则表达式是一个选项,但最简单的方法是简单地使用DOM解析(元素类型是否为自定义似乎并不重要):
var data='Lorem Ipsum只是印刷和排版行业的虚拟文本。第一项Lorem Ipsum只是印刷和排版行业的虚拟文本。第二项Lorem Ipsum只是印刷和排版行业的虚拟文本。第三项Lorem Ipsum只是印刷和排版行业的虚拟文本。',
//使用数据字符串创建元素
//作为其内部HTML:
元素=$(''{
“html”:数据
}),
//使用find()从中检索元素
//在新创建的
array=elem.find('grab').map(函数(){
//…以返回每个
//找到的元素:
返回此.textContent.trim();
//将贴图转换为数组:
}).get();
//附加连接的数组(将数组连接在一起
//使用逗号空格序列)添加到:
$('body').append(array.join(','));
//=>第一项、第二项、第三项
var data='Lorem Ipsum只是印刷和排版行业的虚拟文本。第一项Lorem Ipsum只是印刷和排版行业的虚拟文本。第二项Lorem Ipsum只是印刷和排版行业的虚拟文本。第三项Lorem Ipsum只是印刷和排版行业的虚拟文本。',
元素=$(''{
“html”:数据
}),
array=elem.find('grab').map(函数(){
返回此.textContent.trim();
}).get();
$('body').append(array.join(','))代码>
<代码> <代码>谢谢尼卡,但这也返回了抓取< /代码>标签吗?@ Beh,如果你认为这是最好的答案,请点击复选标记。当然我只是等了10分钟!我从这个简单的答案中学到了很多东西。这里使用的所有JavaScript/jQuery方法都是跨浏览器兼容的吗?它们应该是兼容的,据我所知它们是兼容的(除了“旧IE”(IE版本8及以下)由于jQuery在2.x分支中缺乏对这些浏览器的支持。虽然我认为所有使用的方法都可以在1.x的后续分支中使用,但表示textContent在ie7/8中不可行。请更新您的代码。
var data = 'Lorem Ipsum is simply dummy text of the printing and typesetting industry <grab> First Item</grab>Lorem Ipsum is simply dummy text of the printing and typesetting industry.<grab>Second Item</grab>Lorem Ipsum is simply dummy text of the printing and typesetting industry.<grab>Third Item</grab>Lorem Ipsum is simply dummy text of the printing and typesetting industry.',
// creating a <div> element with the data string
// as its innerHTML:
elem = $('<div />',{
'html' : data
}),
// using find() to retrieve the <grab> elements from
// within the newly-created <div>, and using map()
array = elem.find('grab').map(function () {
// ...to return the trimmed text of each
// found element:
return this.textContent.trim();
// converting the map to an Array:
}).get();
// appending the joined array (joining the array together
// with a comma-white-space sequence) to the <body>:
$('body').append(array.join(', '));
// => First Item, Second Item, Third Item