JavaScript擷取onclick、onchange等事件值的代碼

來源:互聯網
上載者:User
這裡主要是用到了getAttributeNode()這個方法,它擷取的是屬性節點,忽略屬性和事件的差別,具體樣本如下,感興趣的朋友可以參考下雜湊望對大家有所協助 

今天小菜處理下拉式功能表級聯問題時,想擷取HTML標籤中某個事件的內容,也就是值,比如從<select id="city" onchange="javascript:test();"></select>中擷取javascript:test();。
小菜想通過事件中的資訊,確定下一級的菜單,但是這個貌似很簡單的問題,卻讓小菜糾結了一番。
稍微懂點JQuery的童鞋,可能會嘗試這樣擷取:

複製代碼 代碼如下:
$(document).ready(function(){
var onchangeValue = $("#city").attr("onchange");
alert(onchangeValue);
});


一般情況下,這樣的確可以擷取到,因為JQuery萬能的attr方法,可以擷取標籤中任何的”屬性”,即使是一個事件,也可以直接擷取內容,這裡onchange就是事件。
但小菜在實際開發環境中,用這個方法怎麼也擷取不到,得到的均是undefined。
在糾結之際,發現了另外一種用純JavaScript實現擷取的方法。
具體代碼如下:

複製代碼 代碼如下:
$(document).ready(function(){
var onchangeValue = document.getElementById("city").getAttributeNode("onchange").nodeValue;
alert(onchangeValue);
});


簡單說一下,這裡主要是用到了getAttributeNode()這個方法,它擷取的是屬性節點,忽略屬性和事件的差別,類似於對XML的處理,然後再用nodeValue獲得屬性節點的節點值。
如果使用getAttribute()方法,由於onchange是一個事件,因此擷取的是一個函數對象,無法當成字串處理。
希望這篇文章能夠協助需要的童鞋。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.