获取Javascript中某个类中的链接的HREF值

问题描述 投票:2回答:3

我正在尝试处理页面以在某个div类中找到href的值。请记住我没有使用<a>的类。

这是我有的:

var domains = document.getElementsByClassName('r');
for(var i = 0; i < domains.length; i++){
var hello = document.getElementsByClassName('r')[i].innerHTML;
alert(hello);
}

这样可以正常工作,并且会“提醒”班级内的内容。 (我知道这在IE中得不到很好的支持,但那很好)。

我得到一个警告:

<a href="http://stackoverflow.com/questions/887307/getting-href-value-of-from-a-tag"    onmousedown="return     rwt(this,'','','','1','AFQjCNGsxCA6nMXughTW44nSEa94KtbEaQ','','0CC8QFjAA','','',event)">    <em>javascript</em> - <em>getting href</em> value of from &lt;a&gt; tag - Stack Overflow</a>

在href中获得价值的最佳方法是什么?

HTML是这样的:

<h3 class="r"><a onmousedown="return rwt(this,'','','','1','AFQjCNFgNBuo2EfLPoNBi3hGgbuTeLwODw','','0CC8QFjAA','','',event)" href="http://www.google.co.uk/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cad=rja&ved=0CC8QFjAA&url=http%3A%2F%2Fwww.w3schools.com%2Fjsref%2Fprop_html_innerhtml.asp&ei=LacjUo4lw9m0BpLVgYAK&usg=AFQjCNFgNBuo2EfLPoNBi3hGgbuTeLwODw&bvm=bv.51495398,d.Yms"> … </a></h3>
javascript class href getelementsbyclassname
3个回答
4
投票

使用Element.attributes而不是Element.innerHTML。使用HTML,您还需要使用内部循环来获取<a>元素的.r子元素:

var domains = document.getElementsByClassName('r');
for(var i = 0; i < domains.length; i++){
    var anchors = domains.getElementsByTagName('a');
    for (var j = 0; j < anchors.length; j++) {
        alert(anchors[j].attributes.href);
    }
}

或者您可以切换到Element.querySelectorAll()以获得更好的查询API:

var anchors = document.querySelectorAll('.r > a');
for (var i = 0; i < anchors.length; i++) {
    alert(anchors[i].attributes.href);
}

请注意,我重用了domains变量,因为没有理由在每次循环迭代时继续重新查询DOM。


0
投票

尝试像(http://jsfiddle.net/JMsYk/):

var domains = document.getElementsByClassName('r');
for (var i = 0; i < domains.length; i++) {
  var links = domains[i].getElementsByTagName('A');
  for (var j in links) {
    alert(links[j].attributes['href'].value);
  }
}

0
投票

我没试过,但你可以这样做:

var domains = document.getElementsByClassName('r');
for(var i = 0; i < domains.length; i++){
  var hello = domains[i].getElementsByTagName('a');
  //Just in case there's more than one anchor inside a div
  for (j = 0; j < hello.length; j++) {
    // do anything with hello[j].attributes.href (the href of each anchor)
    alert(hello[j].attributes.href);
  }
  //If you just have an anchor inside each h3 then simply
  alert(hello.attributes.href);
}

域已经返回一个包含所有带有'r'的h3的列表,所以在循环中你可以访问每个div作为域[i],然后你得到一个包含当前h3内所有锚点的列表,然后遍历它们(如果有的话) div中不止一个),并提醒每个锚点的href

© www.soinside.com 2019 - 2024. All rights reserved.