05/08: Javascript > getElementsBy*()
Category: Web dev
Posted by: hajime osako
IEでgetElementsByNameはA, APPLET, BUTTON, FORM, FRAME, IFRAME, IMG, INPUT, OBJECT, MAP, META, PARAM, TEXTAREA, SELECTでしか動作しない。
そこで下記のスクリプトを代用する。
また、onChangeはradioボタンではうまく動かない。
getElementsBy*()
getElementsByClassName Deluxe Edition | Muffin Research Labs by Stuart Colville
そこで下記のスクリプトを代用する。
また、onChangeはradioボタンではうまく動かない。
getElementsBy*()
getElementsByClassName Deluxe Edition | Muffin Research Labs by Stuart Colville
function getElementsByClassName(strClass, strTag, objContElm) { strTag = strTag || "*"; objContElm = objContElm || document; var objColl = objContElm.getElementsByTagName(strTag); if (!objColl.length && strTag == "*" && objContElm.all) objColl = objContElm.all; var arr = new Array(); var delim = strClass.indexOf('|') != -1 ? '|' : ' '; var arrClass = strClass.split(delim); for (var i = 0, j = objColl.length; i < j; i++) { var arrObjClass = objColl[i].className.split(' '); if (delim == ' ' && arrClass.length > arrObjClass.length) continue; var c = 0; comparisonLoop: for (var k = 0, l = arrObjClass.length; k < l; k++) { for (var m = 0, n = arrClass.length; m < n; m++) { if (arrClass[m] == arrObjClass[k]) c++; if (( delim == '|' && c == 1) || (delim == ' ' && c == arrClass.length)) { arr.push(objColl[i]); break comparisonLoop; } } } } return arr; }追記:classが指定してあるエレメントのスタイル(背景など)を、Javascriptで変更しようとしてもうまくいかないときがある。その場合は別のクラスで書き換えるとうまくいく。
<input type="text" class="bgRed" id="test" /> × $("test").style.backgroundColor="red"; ○ $("test").className = "newClassName";* $ = document.getElementById