2

我得到了一个 HTML 字符串作为 :var 代码;我想提取这个大字符串中的所有超链接标题值并将它们放在 textarea 中。我尝试了以下方法,但它从来没有奏效。谁能告诉我我做错了什么?

要查找的示例超链接(我想提取芒果、樱桃、...):

 <a href="/season/">mango</a>
 <a href="/season/">cherry</a>

我的代码字符串具有如下数据块:

<div class="details">
    <div class="title">
      <a href="/season/">mango</a>
      <span class="type">3</span>
    </div>

  </div>

完整代码:

$.getJSON('http://anyorigin.com/get?url=http://asite.com/getit.php/&callback=?', function(data){

    //$('#output').html(data.contents);

 var siteContents = data.contents;    

//writes to textarea 
 document.myform.outputtext.value = siteContents ;


var start = siteContents.indexOf('<ul class="list">');
var end = siteContents.indexOf('<ul class="pag">', start);
var code = siteContents.substring(start, end);
 document.myform2.outputtext2.value = code ;

 var pattern = /<a href="([^"]+?)">([^<]+?)<\/a>/gi;
    code = code.match(pattern);
    for (i = 0; i < code.length; i++) {
        document.write($2<br />'));
    }

});

</script>
4

2 回答 2

1

看起来您正在尝试使用正则表达式解析 HTML。这篇文章有一些关于该主题的更多信息。

由于此问题被标记为 jQuery,您可以尝试以下操作...

从返回的 HTML 中创建一个 jQuery 对象:

$markup = $(data.contents);

找到锚点:

$anchors = $markup.find('a');

获取文本(或您想要的任何属性):

arrText = [];
$anchors.each(function() {
    arrText.push($(this).text());
});

将结果放入 textarea:

$textarea.val(arrText.join(','));
于 2013-05-10T06:11:48.957 回答
0

要实现此 jquery 是最简单的解决方案,您可以尝试以下代码

$('a').each(function(){
    var copiedTitle = $(this).html();
    var previous = $('#test').html();
    var newText = previous +"\n"+ copiedTitle;
        $('#test').html(newText);
        });

JS小提琴

于 2013-05-10T06:14:47.570 回答