Probleme mit for schleife

psifactory

Erfahrenes Mitglied
Hi,

ich versuche derzeit auf Basis des Jquery Sliders eine Volume Controll für meine Seite zu bauen (Soundmanager2)

Hierfür habe ich folgendes Script

Code:
$(function() {
		$("#volume").slider({
			range: "min",
			min: 1,
			max: 100,
			value: 60,
			animate: true,
			slide: function(event, ui) {
				
				soundManager.defaultOptions.volume = ui.value;
				for (var z=0; z <  soundManager.sounds.length; z++)
					{ 
					soundManager.sounds.ui360Sound[z].setVolume(ui.value);
					}
				}
		});
		soundManager.defaultOptions.volume = $("#volume").slider("value");
	});

Das mit den defaultOptions.volume funktioniert auch soweit wunderbar , auch wenn ich statt der Schleife das Objekt direkt anspreche
Code:
soundManager.sounds.ui360Sound0.setVolume(ui.value)

Allerdings wenn die Forschleife drin ist klappt das direkte ansprechen auch nicht mehr. Laut Firebug´s DOM Inspector wird auch nichts am Wert verändert.

Wäre super wenn irgendwer den Fehler finden könnte :)

LG

Sebastian
 
Ich kenne Soundmanager nicht, aber du prüfst im Schleifenkopf auf die Länge von "soundManager.sounds". In der Schleife benutzt du aber "soundManager.sounds.ui360Sound[z]".
Also entweder muss es im Schleifenkopf
Javascript:
z <  soundManager.sounds.ui360Sound.length
oder innnerhalb der Schleife
Javascript:
soundManager.sounds[z].setVolume(ui.value);
heißen.
 
Hätte ich vielleicht dazuschreiben sollen.

soundManager.sounds ist das Array wo die verschiedenen (unterschiedlich viele) ui360Sound Elemente drin liegen und ich muss schauen dass ich ja die schleife nur so lange durchlaufen lasse wie ich Elemente habe und bei diesen Elementen dann die Volume ändere.
 
Zuletzt bearbeitet:
Ja, aber da passt was nicht zusammen. Wenn "sounds" das Array ist, wieso machst du den Array-Zugriff dann bei "ui360Sound"?

Mach mal innerhalb der Schleife folgendes:
Javascript:
soundManager.sounds[z].ui360Sound.setVolume(ui.value);
 
Hat leider nicht funktioniert. Hab dir mal 2 Screenshots vom DOM Inspector gemacht.
 

Anhänge

  • Bildschirmfoto 2010-11-04 um 16.48.04.png
    Bildschirmfoto 2010-11-04 um 16.48.04.png
    18,7 KB · Aufrufe: 7
  • Bildschirmfoto 2010-11-04 um 16.48.22.png
    Bildschirmfoto 2010-11-04 um 16.48.22.png
    56,2 KB · Aufrufe: 10
Es ist ja gar kein Array und die Sounds sind einfach so durchnummeriert. Falls du keine Möglichkeits hast herauszufinden, wie viele Sounds tatsächlich da sind, kannst du so alle durchlaufen.

Javascript:
var i=0, obj;
while(obj = sounds["ui360Sound" + i]) {
	i++;
	obj.setVolume(ui.value);
}
 

Neue Beiträge

Zurück