如何在div中获取链接并使用js单击它

时间:2013-12-13 05:19:39

标签: javascript getelementsbyclassname

我正在尝试为扩展程序编写一个函数,该扩展程序可以在特定div中找到链接并单击它。该链接没有id或类名,所以我一直在寻找类似于CSS选择器的东西,但是JS没有使用'$'或'jQuery',因为这需要我嵌入带有扩展名的jquery库。

div有一个类名,然后是一个链接,所以这是我到目前为止的代码 -

function COut() {
  var a = document.getElementsByClassName('bottom_row').getElementsByTagName('a');
  for (var i = 0; i < a.length; i++) {
    var elem = a[i],
    elem.click();
  }
}

这是div和链接的标记 -

<div class="bottom_row">
                <a onclick="miniAddToCart.closeMiniAddToCart({cmConversionEvent: 'Checkout'})" href="http://www.domain.com/shoppingcart/default.cfm?checkout=1&amp;"><img src="http://www.domain.com/images/eb/minicart/checkout.gif" alt="Checkout"></a>
            </div>

任何想法我做错了什么?

2 个答案:

答案 0 :(得分:0)

getElementsByClassName('bottom_row').getElementsByTagName('a');

getElementsByClassName返回一个集合,而不是单个项目

getElementsByClassName('bottom_row')[0].getElementsByTagName('a');   
                                    ^^^

如果className中可以有多个项目,则需要循环。如果您支持现代浏览器,则可以查看querySelectorAll

最后点击链接并不像调用click()

那么容易

How can I simulate a click to an anchor tag?

如果你想让它对网址做,你可能最好只设置window.location.href

答案 1 :(得分:0)

如果有一个A标签,我不会为此做出循环。相反,你可以这样做:

function COut() {
  var a = document.getElementsByClassName('bottom_row')[0].getElementsByTagName('a')[0];
  if(a){
    a.click();
  }
}