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