0

嘗試簡單地識別是否有任何標籤在任何時候被點擊並獲得單擊標籤的href屬性以存儲在數據庫中。試圖獲得<a>標籤的href屬性onclick - 沒有錯誤?

爲了測試我試圖打印出href,但是沒有任何內容在屏幕上顯示,並且在控制檯中沒有錯誤?有任何想法嗎?

// Anchor Tags - Capture the href of the link clicked 
var aTags = document.getElementsByTagName('a'); 

for (var i = aTags.length - 1; i >= 0; --i) { 
    aTags[i].onclick = function() { 
    var aTagHref = aTags[i].getAttribute("href"); 
     alert(aTagHref); 
    }; 
} 
+0

使用 '這個' 或event.target。你試圖做到這一點的方式不起作用,因爲你不通過閉包來緩存'i'。因此,當循環結束時,我將是aTags.length + 1,因此所有點擊都將嘗試在aTags中找到一個不存在的元素。總是嘗試在事件處理程序中使用event.target,因爲它會告訴您事件來自哪個元素,而無需將其緩存到數組中。 – Shilly

回答

2

裏面一個事件監聽器,你不會有元素的數組,並且還可以使用this引用點擊a

像這樣:

var aTags = document.getElementsByTagName('a'); 
 

 
for (var i = aTags.length - 1; i >= 0; --i) { 
 
    aTags[i].onclick = function() { 
 
    var aTagHref = this.getAttribute("href"); 
 
     alert(aTagHref); 
 
    }; 
 
}
<a href="#asd">a</a> 
 
<br /> 
 
<a href="#asdf">b</a> 
 
<br /> 
 
<a href="#asdfg">c</a>

+0

它的工作原理!快速問題,for循環背後的邏輯是什麼var i = aTags.length - 1; ?我們是不是通過從長度減1來跳過初始索引,而不是像i = 4,3,2,1那樣進行迭代,我們正在像:3,2,1 ...正確? – Shaz

+1

@Shaz,這種情況下的生命線是 - > create'var i = 3 - 1';檢查條件;做邏輯;遞減;檢查條件....所以,'i'的值就像2,1和0 – Lucas

+0

這就是我的觀點。它不會執行'3'上的邏輯。開始。如果var i中有3個鏈接,是不是隻是在2,1 0和NOT 3nth上執行邏輯? – Shaz

相關問題