2010-02-14 125 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