亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

JavaScript單擊類上的事件偵聽器

JavaScript單擊類上的事件偵聽器

LEATH 2019-07-17 10:23:37
JavaScript單擊類上的事件偵聽器目前,我正在嘗試編寫一些JavaScript,以獲取已單擊的類的屬性。我知道要正確地這樣做,我應該使用事件偵聽器。我的代碼如下:var classname = document.getElementsByClassName("classname");var myFunction = function() {     var attribute = this.getAttribute("data-myattribute");     alert(attribute);};classname.addEventListener('click', myFunction(), false);我原以為每次單擊其中一個類來告訴我屬性時,都會收到一個警告框,但不幸的是,這是行不通的。有人能幫忙嗎?(注 - 我可以很容易地在jQuery但我會不喜歡用它)
查看完整描述

2 回答

?
慕容3067478

TA貢獻1773條經驗 獲得超3個贊

這應該管用。getElementsByClassName返回列陣匹配條件的元素的類似數組的對象(請參閱編輯)。

var classname = document.getElementsByClassName("classname");var myFunction = function() {
    var attribute = this.getAttribute("data-myattribute");
    alert(attribute);};for (var i = 0; i < classname.length; i++) {
    classname[i].addEventListener('click', myFunction, false);}

jQuery為您做循環部分,您需要在普通JavaScript中這樣做。

如果你有ES6支援您可以將最后一行替換為:

    Array.from(classname).forEach(function(element) {
      element.addEventListener('click', myFunction);
    });

注意:舊瀏覽器(如IE6、IE7、IE8)不支持getElementsByClassName所以他們回來了undefined.


編輯:更正

getElementsByClassName不返回數組,但大多數情況下返回HTMLCollection,或者NodeList是一些瀏覽器(Mozilla參考文獻)。這兩種類型都類似于數組(這意味著它們有一個Length屬性,并且可以通過它們的索引訪問對象),但是嚴格來說,它們不是Array,也不是從Array繼承的。(這意味著不能對這些類型執行其他可以在Array上執行的方法)


查看完整回答
反對 回復 2019-07-17
  • 2 回答
  • 0 關注
  • 321 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號