人が書いたスクリプトを自分なりに書き換えてみるシリーズ。
mouseover
/mouseout
のたびにreplace
するのも手間がかかりそう。(function() {
if (!document.getElementsByTagName) return;
var addEvent, switchImage, init;
addEvent = function(obj, type, func) {
if (obj.addEventListener) {
obj.addEventListener(type, func, false);
}
else if (obj.attachEvent) {
obj.attachEvent('on' + type, func);
}
};
switchImage = function(event) {
var img = event.target || event.srcElement;
img.src = (img.src == img.srcOff) ? img.srcOn : img.srcOff;
};
init = function() {
var imgs = document.getElementsByTagName('img');
var loaded = {}, img;
for (var i = 0, len = imgs.length; i < len; i++) {
img = imgs[i];
if ( !img.src.match(/^(.*_)off(\..*)$/) ) continue;
img.srcOff = img.src;
img.srcOn = RegExp.$1 + 'on' + RegExp.$2;
addEvent(img, 'mouseover', switchImage);
addEvent(img, 'mouseout', switchImage);
if (loaded[img.srcOn]) continue;
loaded[img.srcOn] = true;
(new Image).src = img.srcOn;
}
};
addEvent(window, 'load', init);
})();
いきあたりばったりな書き方になっている気がする。