ugrás a tartalomhoz

Archívum - Szep 12, 2006

Diszkrét rollover vs. IE

Dj Faustus · 2006. Szep. 12. (K), 04.05
Szevasztok, problémám a következő lenne:
adottak az alábbi Javascript függvények:
function getElementsByClass(name) {
  var found = 0;
  var elems = new Array();
  var alltags = document.getElementsByTagName("*");
  if (alltags) {
    for (j=0; j < alltags.length; j++) {
        if (alltags[j].className==name) {
          elems[found++]=alltags[j];
        }
    }
  }
  return(elems);
}
function addEventHandler(obj, eventType, handler) {
	if (window.opera && obj.addEventListener) {
		obj.addEventListener(eventType, handler, false);
		return true;
	} else if (obj.addEventListener) {
		obj.addEventListener(eventType, handler, true);
		return true;
	} else if (obj.attachEvent) {
		var r = obj.attachEvent("on"+eventType, handler);
		return r;
	} else {
		return false;
	}
}
function mover() {
	var outimgs = new Array;
	var outimgsname = new Array;
	var overimgs = new Array;
	var over = getElementsByClass('over');
	for (j=0; j < over.length; j++) {
		outimgs[j] = new Image();
		overimgs[j] = new Image();
		outimgs[j].src = over[j].lastChild.src;
		overimgs[j].src = over[j].lastChild.src.replace ('\.jpg','_on.jpg');
		outimgsname[j] = over[j].lastChild.name;
		over[j].setAttribute('onmouseover', 'document.images[\''+outimgsname[j]+'\'].src=\''+overimgs[j].src+'\';');
		over[j].setAttribute('onmouseout', 'document.images[\''+outimgsname[j]+'\'].src=\''+outimgs[j].src+'\';');
	}
}
addEventHandler(window,'load',mover);
Ez lényegében egy rollover effektet valósít meg az alábbiakhoz kódokban:
<a href="#" class="over"><img src="elso.jpg" name="elso" alt="Első kép" /></a>
, ahol az onmouseoverhez tartozó képek nevének végén az _on utótag van.

Opera és Firefox alatt működik is rendesen. IE alatt viszont nem, annak ellenére, hogy az IE Developer Toolbar szerint az onmouseout és onmouseover események rendesen hozzáadódnak (megfelelő értékekkel) az <a> taghez.