如何使用javascript从大html字符串中提取所有超链接标题?
我得到了一个HTML字符串:var code;我想提取这个大字符串中的所有超链接标题值,并将它们放在textarea中。我尝试了以下方法,但都没用。谁能告诉我我做错了什么 要查找的示例超链接(我想提取芒果、樱桃等):如何使用javascript从大html字符串中提取所有超链接标题?,javascript,jquery,Javascript,Jquery,我得到了一个HTML字符串:var code;我想提取这个大字符串中的所有超链接标题值,并将它们放在textarea中。我尝试了以下方法,但都没用。谁能告诉我我做错了什么 要查找的示例超链接(我想提取芒果、樱桃等): 我的代码字符串包含如下数据块: <div class="details"> <div class="title"> <a href="/season/">mango</a> <span cla
我的代码字符串包含如下数据块:
<div class="details">
<div class="title">
<a href="/season/">mango</a>
<span class="type">3</span>
</div>
</div>
3.
完整代码:
$.getJSON('http://anyorigin.com/get?url=http://asite.com/getit.php/&callback=?,函数(数据){
//$('#output').html(data.contents);
var siteContents=data.contents;
//写入文本区域
document.myform.outputtext.value=站点内容;
var start=siteContents.indexOf(“”);
var end=siteContents.indexOf(“”,start);
var code=siteContents.substring(开始、结束);
document.myform2.outputExt2.value=代码;
var pattern=/看起来您正在尝试使用正则表达式解析HTML。有关于该主题的更多信息
由于这个问题被标记为jQuery,您可以尝试以下方法
从返回的HTML生成jQuery对象:
$markup = $(data.contents);
找到锚:
$anchors = $markup.find('a');
获取文本(或任何您想要的属性):
将结果放入文本区域:
$textarea.val(arrText.join(','));
要实现这个jquery是最简单的解决方案,您可以尝试以下代码
$('a').each(function(){
var copiedTitle = $(this).html();
var previous = $('#test').html();
var newText = previous +"\n"+ copiedTitle;
$('#test').html(newText);
});
Umm,$(“a”)。每个(function(){//concatenate};
?既然你知道JQuery,为什么不试试$(“.list a”)。每个(function(){//do some})
应该在这里使用$.getJSON来获取html…$.ajax会产生更好的结果吗?谢谢大家的回复。志浩我试过你的解决方案没有文本区域的数据:$markup=$(code);$archors=$markup.find('a');arrText=[];$archors.each(function(){arrText.push($(this.text());});myTextarea.value=arrText.join(',');@user1788736对不起,我不明白你所说的“文本区域中没有数据”是什么意思.根据您的问题,我假设您在回答中得到的HTML将在数据中。内容
。如果我错了,请纠正我。zhihao data.contents是原始HTML。但我将其缩短了(代码包含我要提取的数据)因此,我避免在原始html代码中使用不必要的超链接。因此,我想从“代码”中删除所有超链接标题,并将它们放在文本区域中。@user1788736感谢您的澄清。我不明白您现在遇到了什么问题。您提到“尝试了[我的]解决方案,文本区域中没有数据”.到底发生了什么或不起作用?我提供的解决方案应该提供一个通用的指导原则,说明如何从响应的HTML字符串中获取锚内的文本。
arrText = [];
$anchors.each(function() {
arrText.push($(this).text());
});
$textarea.val(arrText.join(','));
$('a').each(function(){
var copiedTitle = $(this).html();
var previous = $('#test').html();
var newText = previous +"\n"+ copiedTitle;
$('#test').html(newText);
});