2010-02-14 64 views
3

我正在寻找如何点击使用javascript在我的网页上的链接。在我的页面中,我显示了数据库中的每条记录。和一个'显示'链接,右键点击它将展开并显示详细的行。我想一次展开所有行。是否有可能像这样点击JavaScript链接?虽然javascript的点击链接

+1

+1欢迎堆栈溢出! – Sampson 2010-02-14 06:08:40

回答

2

你可以循环所有的锚,并点击它们,是:

var myLinks = document.getElementsByTagName("a"); 
for (var i = 0; i < myLinks.length; i++) { 
    myLinks[i].click(); 
} 

注意,这会点击每个页面上的链接。您可以通过坐在外面他们的父容器会更专注于一组特定的链接:

var myLinks = document.getElementById("container").getElementsByTagName("a"); 

这会得到有“容器”的id值的元素中的所有链接。

UPDATE2:

中的注释,你想知道如何点击链接仅其ID开始一个特定的字符串。让我们来看看,我们可以实现到我们前面提到的代码几种方法:

使用jQuery,您可以点击所有id='reviews-show...'链接是这样的:

$("a[id^='reviews-show']").click(); // simple, eh? 

^=在这个选择匹配的正则表达式风格,询问字符串是否以“reviews-show”开始,其将只检索该语句为真的a标签。

如果你想坚持只是普通的JavaScript,我们可以modifiy我们的第一个代码块,检查子:

var myLinks = document.getElementsByTagName("a"); 
for (var i = 0; i < myLinks.length; i++) { 
    currentlink = myLinks[i]; 
    if (currentlink.id.substring(0,12) === "reviews-show") { 
    currentlink.click(); 
    } 
} 

更新:

显然jQuery烂掉我的心思,我的解决方案不工作。如果你不介意使用jQuery(你会爱上它),你可以走这条路:

$("a").click();   //clicks all links on page 
$("#container a").click();//clicks all links within element having id 'container' 

如果你想远离的框架了,尝试添加该原型扩展到代码的顶部这将使我原来的答复足够:

HTMLElement.prototype.click = function() { 
    if (document.createEvent) { 
    var evt = this.ownerDocument.createEvent('MouseEvents'); 
    evt.initMouseEvent('click', true, true, this.ownerDocument.defaultView, 1, 0, 0, 0, 0, false, false, false, false, 0, null); 
    this.dispatchEvent(evt); 
    } else if (this.fireEvent) { 
    this.fireEvent("onclick"); 
    } 
} 

来源:http://www.barattalo.it/2009/11/18/click-links-with-javascript/

+0

它不适用于Firefox。如何使它与ff一起工作? – anusuya 2010-02-14 14:39:52

+0

@anusuya:请参阅我的更新解决方案。 – Sampson 2010-02-14 16:30:51

+0

谢谢乔纳森。它工作完美! – anusuya 2010-02-16 13:26:34