源生javascript 添加getElementByClass方法

來源:互聯網
上載者:User

直接上代碼:

document.getElementByClass = function(n) {             var el = [],                _el = document.getElementsByTagName('*');            for (var i=0; i<_el.length; i++ ) {                 if (_el[i].className == n ) {                    el[el.length] = _el[i];                }            }            return el;        }

使用也很簡單,比如:

var nick = document.getElementByClass("user-nick")[0].innerText;

Update20120703:

上面提到的函數會存在一些問題,比如一個元素設定兩個class的話,就會有問題。

在stackoverflow上找到了更加完美的解決方案:

function getElementsByClassName(node,classname) {  if (node.getElementsByClassName) { // use native implementation if available    return node.getElementsByClassName(classname);  } else {    return (function getElementsByClass(searchClass,node) {        if ( node == null )          node = document;        var classElements = [],            els = node.getElementsByTagName("*"),            elsLen = els.length,            pattern = new RegExp("(^|\\s)"+searchClass+"(\\s|$)"), i, j;        for (i = 0, j = 0; i < elsLen; i++) {          if ( pattern.test(els[i].className) ) {              classElements[j] = els[i];              j++;          }        }        return classElements;    })(classname, node);  }}

使用方法:

function toggle_visibility(className) {   var elements = getElementsByClassName(document, className),       n = elements.length;   for (var i = 0; i < n; i++) {     var e = elements[i];     if(e.style.display == 'block') {       e.style.display = 'none';     } else {       e.style.display = 'block';     }  }}

這個方案還有一個好處,就是考慮了Firefox, Safari, 以及 Opera等瀏覽器已經支援getElementsByClassName方法的情況並進行了處理。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.