Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/385.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery以字符串格式抓取标记内的文本并添加到数组中_Javascript_Jquery - Fatal编程技术网

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