Derek の回答を試すことができますが、 querksモードの IE8 または IE 7 以下ではquerySelectorがサポートされておらず、IE 8 以下ではaddEventListenerがまったくサポートされていないことがすぐにわかります。
プレーンな js の選択肢には、独自のgetElementsByClassname関数を作成する (特に難しいことではありません) か、イベント委任を使用して、イベントごとに 1 つのリスナーのみをアタッチし、単純なhasClass関数が必要になるようにすることが含まれます。
とにかく、ここに例があります:
すべての JavaScript 作成者がライブラリに含めるか、数分でコーディングできる標準ライブラリ関数の一部:
// Minimalist addEvent function, ok for the current web
function addEvent(el, fn, evt) {
if (el.addEventListener) {
el.addEventListener(evt, fn, false)
} else if (el.attachEvent) {
el.attachEvent('on' + evt, fn);
}
}
// Returns true or false depending on whether element el has class classname
function hasClassname(el, classname) {
var re = new RegExp('(^|\\s)' + classname + '(\\s|$)');
return re.test(el.className);
}
作業を行う関数:
// Toggle the id. Note that this deals with the case where
// the element to toggle isn't found to prevent errors being thrown
function toggleId(e) {
e = e || window.event;
var el = e.target || e.srcElement;
var o;
if (hasClassname(el, 'tomouseover')) {
if (e.type == 'mouseover') {
o = document.getElementById('set1');
if (o) o.id = 'set2';
} else if (e.type == 'mouseout') {
o = document.getElementById('set2');
if (o) o.id = 'set1';
}
}
}
// Attach the listener onload, could also add from a bottom
// script or inline. If inline, use `toggleId(event)`
window.onload = function() {
addEvent(document.body, toggleId, 'mouseover');
addEvent(document.body, toggleId, 'mouseout');
}
上記は、IE6 および NN 3 程度までのすべてのブラウザーで機能し、W3C または IE イベント モデルのいずれかである将来のブラウザーでも引き続き機能します。