Value wird nicht zur Funktion übergeben?

cameeel

Erfahrenes Mitglied
Tag alle.

Ich bin leider noch nicht so gut in JS und hab deshalb eine Frage bzw. ein Problem mit meinem Script, und zwar wird antscheinend der Wert nicht an die Funktion übergeben:

Mit onMouseOver und onMouseOut werden die Funktionen ggf. ausgelöst:
HTML:
<a href='#' onMouseOver="javascript:goBig('icon_1');" onMouseOut="javascript:goSmall('icon_1');">
    <img src='./icons/icon_1.png' width='50' height='50' style='border:none;' alt='Icon 1' name='icon_1' />
    </a>

Nun die Funktionen in Head der Datei:

HTML:
<script language='JavaScript' type='text/javascript'>
    function goBig (icon) {
     var now_width = document.icon.width;
     var now_height = document.icon.height;
    }
    </script>

Eigentlich sollten die Variablen now_width und now_height jetzt die Angaben über Höhe und Breite der Grafik beinhalten, dem ist aber nicht so, nur warum?
Das ist jetzt natürlich nicht die komplette Funktion da oben sondern nur ein Teil aber die Funktion an sich funktioniert, weil wenn ich in der Funktion var now_height = document.icon_1.height; usw. verwendet (also direkt eine bestimmte Grafik anspreche) funktioniert alles, aber da es mehrere Grafiken sind will ich natürlich nicht für jede Grafik die Funktion neu schreiben....

Ich hoffe ihr versteht das Problem.

Danke,
cAm3eel.
 
Du übergibst der Function eine Zeichenkette.... wenn du auf das Bild zugreifen willst, benötigst du aber ein Objekt.
Das "icon" in document.icon verweist jedoch nicht auf die übergebene Variable, sondern vielmehr wird im Dokument ein Element namens "icon" gesucht.

Schreibe statt document.icon ......document.images[icon] ....und du hast einen Zeiger auf das Bild.
 
Probier es mal mit der getElementsByName()-Methode:
Code:
function goBig( elementName )
{
	if( !document.getElementsByName(elementName)[0] ) {
		return false;
	}
	var now_width  = document.getElementsByName(elementName)[0].width;
	var now_height = document.getElementsByName(elementName)[0].height;
	// zur Prüfung:
	alert("Dimensionen des Elements '" + elementName + "':\nBreite: " + now_width + "px\nHöhe: " + now_height + "px");
}
 
Genau, mit dem was Sven gepostet hat sollte es eigetnlich gehen, tuts aber nicht :-)
Hab ich vielleicht was falsch umgesetzt?

Könnte mal einer einen Blick auf den Source werfen? Klick.

Das wär echt super.

Gruß,
cAm3eel.
 
Das ist mir schon klar aber dene ihr Code ist mir doch bissel zu kompliziert und kopieren will ich den net... Scripte ich mir lieber selbst eine einfachere Version...

Hast du nun ne Idee warum das Value immer noch net übergeben wird?

Danke,
cAm3eel.
 
Der Wert wird schon übergeben.... beim ersten Aufruf der Funktion.
Danach machst du den selben Fehler wie eingngs...nur genau umgekehrt :-)
Beim setTimeout() vübergibst du das Objekt "icon" ....dieses ist allerdings zu diesem Zeitpunkt nicht mehr bekannt. Abgesehen davon....erwartet die Funktion einen String, und kein Objekt:
Code:
setTimeout("goSmall('"+icon+"')", speed);
 
Mhh JS wird mir zunehmend unsympathisch ^^
Wie auch immer, danke es geht jetzt!

Den Bug das es so wackelt werd ich hoffentlcih selbst lösen können, ansonsten meld ich mich nochmal :)

Danke,
cAm3eel.
 

Neue Beiträge

Zurück