从标签获取href属性

时间:2018-06-27 15:19:51

标签: javascript jquery html

我需要从页面获取href标记中的所有特定a属性。 我在页面中需要的所有href都看起来像这样:

href="/46089021"

整个a看起来像这样:

<a class="truncate openwindow" target="_blank" href="/46089021" title="Blah Blah Blah">

感谢您的帮助。

我忘了提及,那些href具有唯一的编号...每个企业在斜杠后都有不同的8位数字。不管是js还是jquery

5 个答案:

答案 0 :(得分:1)

如果您要选择所有<a>,且href以/开头,后跟8位数字,则可以使用filter()

var result = $('a').filter(function(){
    return /^\/[0-9]{8}$/.test( $(this).attr('href') );
});
	
//Print the result for testing
result.each(function(){
    console.log( $(this).attr('href') );
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<a class="truncate openwindow" target="_blank" href="not-this-one" title="Blah Blah Blah">
<a class="truncate openwindow" target="_blank" href="/46089022" title="Blah Blah Blah">
<a class="truncate openwindow" target="_blank" href="/46089023" title="Blah Blah Blah">
<a class="truncate openwindow" target="_blank" href="not-this-one-too" title="Blah Blah Blah">
<a class="truncate openwindow" target="_blank" href="/46089025" title="Blah Blah Blah">

答案 1 :(得分:1)

使用纯JS和:

  

...每个企业在斜杠后都有不同的8位数字。

     

是否与js / jquery无关

<script>
(function () {
    let aList = document.querySelectorAll('a');
    aList.forEach(function(a) {
        if(a.getAttribute('href').match(/^\/\d{8}$/)) {

            // ... do things ...

        }
    });
})();
</script>

这是一个自执行功能,因此它将在DOM加载后运行(否则无法获取标签);本质上,它循环遍历文档中的所有<a>标签,然后验证href属性是/,后跟精确地 8位数字。

您只需要添加我在标记了// ... do things ...的锚点上实际要做的事情

注意: IE11(及更早版本)不支持IIRC nodeList.forEach ,因此,如果需要支持,则可以在其中原型化或仅使用jQuery代替选择器/循环。


我只使用Regex来验证href属性的格式,而不是HTML本身,因此ZA̡͊͠͝LGΌISͮ̂҉̯͈͕̹̘̱ TO͇̹̺ͅƝ̴ȳ̳ TH̘Ë͖́̉P͠O̚N̐Y可以保持原样!

答案 2 :(得分:0)

您可以使用document.links获取所有锚点,然后像这样循环遍历href

var arr = [], l = document.links;
      for(var i=0; i<l.length; i++) {
        var aHref=l[i].getAttribute('href');
        var reg = new RegExp(/^\/\d{8}$/);
          if (aHref.match(reg)){
           console.log(aHref);
            arr.push(aHref); 
           }
      }
<a class="truncate openwindow1" target="_blank" href="/46089033" title="Blah Blah Blah">
<a class="truncate openwindow2" target="_blank" href="/46089044" title="Blah Blah Blah">
<a class="truncate openwindow3" target="_blank" href="/46089055" title="Blah Blah Blah">
<a class="truncate openwindow4" target="_blank" href="/460890766" title="Blah Blah Blah">

答案 3 :(得分:0)

您可以使用jQuery的map()方法根据DOM中所有元素的属性和/或属性来构建数组。

如果要使用绝对URL ,请使用href属性:

var hrefs = $('a').map(function() {
  return this.href;
}).get();

如果要使用相对路径,请使用href属性:

var hrefs = $('a').map(function() {
  return $(this).attr('href');
}).get();

答案 4 :(得分:0)

https://jsfiddle.net/u92q068y/3/

基本上,只需在文档中查询所有anchor标记,然后获取href属性,然后对它们进行操作即可。多种方法可以做到这一点,但这只是一种。

const aTags = document.querySelectorAll('a');
aTags.forEach( a => console.log(a.getAttribute('href')));
<a class="truncate openwindow" target="_blank" href="/46089021" title="Blah Blah Blah">
<a class="truncate openwindow" target="_blank" href="/46089022" title="Blah Blah Blah">
<a class="truncate openwindow" target="_blank" href="/46089023" title="Blah Blah Blah">
<a class="truncate openwindow" target="_blank" href="/46089024" title="Blah Blah Blah">