Hackerboard WikiHaboBlog

[HaBo]

 
(Web-) Design und webbasierte Sprachen Tipps & Tricks, Designabgleich, HTML & Javascript, Flash, ASP, PHP, Perl/CGI...

Initialisierunsproblem mit JS[erledigt]

Diskussion: Initialisierunsproblem mit JS[erledigt] im Forum (Web-) Design und webbasierte Sprachen, in der Kategorie Web, Network & Multimedia Palace; Hallo! Wenn man Funktionen mittels ... <body onload="function()"> ... ausführt ist deren Ergebnis,sobald die Seite einsatzbereit ist, weg. Wie kann ...

Antwort
Alt 20.10.09, 01:44   #1 (permalink)
Senior Member
 
Benutzerbild von sw33tlull4by
 
Registriert seit: 12.06.07
sw33tlull4by Leistung: Facit NTK
Likes: 0
Initialisierunsproblem mit JS[erledigt]


Hallo!
Wenn man Funktionen mittels
...
<body onload="function()">
...
ausführt ist deren Ergebnis,sobald die Seite einsatzbereit ist, weg.
Wie kann ich das verhindern?

Aktuelles Problem:
Eine Liste mit mehreren Elemeneten,welchen ich eine Funktion zuweisen wollte, nur leider funktioniert das nicht so wie gedacht.
zZ ist meine LIste noch sehr klein und es ist deswegen eigentlich gut Möglich das so per hand zu machen aber bei grossen Listen wäre ich sehr dankbar wenn ich auf diese Weise getElementsByName benutzen könnte.

Minimalbeispiel   

Code:
<html>
<head>
<title>hiho</title>
<script language="Javascript" type="text/Javascript">
function noway(element){
document.getElementById("output").innerHTML = element.id;
}
function everyway(){
document.getElementById("output").innerHTML = "";
}
function initial(){
document.getElementById("output").onmouseover = "noway(this)";
document.getElementById("output").onmouseout = "everyway()";
}
</script>
</head>
<body onload="initial()">
<div id="stupid">HARHARHAR</div>
<div id="output"></div>
</body>
</html>
Das minimalbeispiel sollte funktionieren.
Was passiert ist das wenn ich über das Element stupid mit der Maus fahre nichts passiert.
Wenn ich den Code jedoch ändern würde in:
...
<div id="stupid" onmouseover="noway()" onmouseout="everyway()">harhar</div>
....

funktioniert es.



mfg

sw33t
__________________
Nur die Schwachen klammern sich an die Moral.

Kill my daemons and my angels will follow them.
sw33tlull4by ist offline   Mit Zitat antworten
Alt 20.10.09, 09:26   #2 (permalink)
 
Benutzerbild von metax.
 
Registriert seit: 22.01.07
metax. Leistung: 8086
metax. eine Nachricht über ICQ schicken
Likes: 10
Standard

Hallo, du musst die Events auch an #stupid anhängen, nicht an #output.
#output ist zu Beginn nicht sichtbar und empfängt deswegen kmeinen mouseover-event.

Außerdem: Events sind keine zeichenketten, sondern Funktionen. Du kannst bei der Zuweisung einen Funktionsnamen angeben (ohne Parameter) oder eine anonyme Funktion definieren:
Code:
document.getElementById("stupid").onmouseover = function() { noway(document.getElementById("stupid")); };
document.getElementById("stupid").onmouseout = function() { everyway(); };
mfg, metax.
__________________
Wenn keiner zuschaut, teile ich heimlich durch Null!
Meine Homepage: Planet Metax | meine Bilder: DeviantArt | Twitter
metax. ist offline   Mit Zitat antworten
   
HaBOT
 

Werbung ist gerade online    
Alt 20.10.09, 14:37   #3 (permalink)
Senior Member
Themenstarter
 
Benutzerbild von sw33tlull4by
 
Registriert seit: 12.06.07
sw33tlull4by Leistung: Facit NTK
Likes: 0
Standard

das mit den anonymen funktionen kannte ich bisher nur von anderen Programmiersprachen.danke.

b2t:
Das mit den Zeichenketten und dem output anstelle von stupid, waren schreibfehler, war sehr gar gestern abend.

Mein Problem bleibt bestehen.
Falls es hilft Browser ist FF3.5.3.

Hier mal der wichtigste Auszug aus dem gestesteten Code:

Code:
<html>
	<head>
		<title>asdasd</title>
	</head>
	<script type="text/javascript" language="JavaScript">
		function noway( element){
			document.getElementById("output").innerHTML = element.id;
			document.getElementById("t"+element.id).style.backgroundColor ="black";
			
		}
		
		function everyway(){
			document.getElementById("output").innerHTML="";
			document.getElementById("one").style.backgroundColor ="white";
		}
		function initialize(){/* sowohl das nicht auskommentierete aus auch das auskommentierte der funktion funktioniert nicht
			var element = document.getElementsByName("link");
			for(var i in element){
				i.onmouseover = noway(this);

			}*/
			document.getElementById("four").onmouseover = noway(this);
		}
			
	
	
	
	</script>
	<body onload="initialize()">
		<div id="stupid" onmouseover="noway(this)" onmouseout="everyway()">Haha</div>
		<br>&nbsp;<br>
		<div id="output"></div>
		<div id="list">
			<ul>
				<li><a name="link" id="seven"  href="#">asasda</a></li>
				<li><a name="link" id="eight"  href="#">asdad</a></li>
			</ul>
			<ul>
				<li><a name="link" id="nine"   href="#">asdada</a></li>
				<li><a name="link" id="ten"    href="#">asdasd </a></li>
				<li><a name="link" id="eleven" href="#">sfsdfsd</a></li>
				<li><a name="link" id="twelve" href="#">asdasd</a></li>
			</ul>
		</div>
			<div id="tseven">
				hiih
			</div>
			<div id="teight">
				hoho
			</div>
			<div id="tnine">
				lala
			</div>
			<div id="tten">
				tada
			</div>
			<div id="televen">
				blub
			</div>
			<div id="ttwelve">
				bla
			</div>
	</body>
</html>
__________________
Nur die Schwachen klammern sich an die Moral.

Kill my daemons and my angels will follow them.
sw33tlull4by ist offline   Mit Zitat antworten
Alt 20.10.09, 16:53   #4 (permalink)
 
Benutzerbild von BasicAvid
 
Registriert seit: 17.03.04
BasicAvid Leistung: Facit NTK
Likes: 1
Standard

Hallo,

dein Code enthält mehrere Fehler, zum einen wird Deine Funktion gleich beim zuweisen aufgerufen, und zum anderen weiß dein Browser ja nicht, dass this eigentlich auf das Element zeigen soll.

Hier mal der angepasste JS Code:

Code:
function noway(e) {
	e = (e) ? e : (window.event) ? window.event : "";
	var element = (e.target) ? e.target : e.srcElement;
	document.getElementById("output").innerHTML = element.id;
	document.getElementById("t"+element.id).style.backgroundColor ="black";
}
		
function everyway() {
	document.getElementById("output").innerHTML="";
	document.getElementById("one").style.backgroundColor ="white";
}
		
function initialize() {
	var element = document.getElementsByName("link");
			
	for(var i = 0; i < element.length; i++) {
		element[i].onmouseover = noway;
	}
}
__________________
Mfg Basic Avid
- Use it or be used! -
BasicAvid ist offline   Mit Zitat antworten
Alt 06.11.09, 11:31   #5 (permalink)
Senior Member
Themenstarter
 
Benutzerbild von sw33tlull4by
 
Registriert seit: 12.06.07
sw33tlull4by Leistung: Facit NTK
Likes: 0
Standard

Vielen dank für den angepassten JS Code.
Funktioniert nun, vielen dank.
Mfg

sw33t
__________________
Nur die Schwachen klammern sich an die Moral.

Kill my daemons and my angels will follow them.
sw33tlull4by ist offline   Mit Zitat antworten
Antwort
   

Werbung ist gerade online    

[HaBo] » Web, Network & Multimedia Palace » (Web-) Design und webbasierte Sprachen » Initialisierunsproblem mit JS[erledigt]
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind aus
Pingbacks sind aus
Refbacks sind aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Constructor[C++][Erledigt] sw33tlull4by Code Kitchen 2 09.02.09 12:21
TV-Karte [Erledigt] Grafix Kaufberatung 3 07.10.06 22:15
[C++ / Erledigt] Variable in Dateiname reaLInsanity Code Kitchen 3 26.09.06 17:30
MFC & Serialisierung -- ERLEDIGT BuzzT Code Kitchen 0 13.04.06 14:50


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61