Seite 2 von 3

Verfasst: Do Jul 03, 2003 11:19 am
von Katana
Sicher ist das möglich.
Beispiel:

Code: Alles auswählen

<script type="text/javascript">

// Die folgenden Parameter sind zum ändern gedacht:

// Eine "Liste" mit den Bild-URL erstellen,
// welche angezeigt werden sollen
var pictureArray = new Array('bild1','bild2','bild3');

// Die Seite, die geladen werden soll,
// nachdem alle Bilder angezeigt wurden
var pageToLoad = 'http://www.google.de';

// Die ID des IMG-Tags, bei welchem 
// die Bilder ausgetauscht werden sollen
var idToExchange = 'gross';

// Ab hier nix ändern (außer evtl. window.open())

// den Zähler initialisieren
var counter = 0;

function exchangePic() {
  if (counter == pictureArray.length) {
    // Sollten alle Bilder durch sein, 
    // neue Seite laden
    document.location.href = pageToLoad;

    // Wenn du die Seite in 'nem neuen Fenster
    // öffnen willst, solltest du
    // window.open() verwenden
    // Infos zu window.open() gibt's hier:
    // http://selfhtml.teamone.de/javascript/objekte/window.htm#open

    // window.open(pageToLoad, 'Fenstertitel', '');
  }
  else {
    // Sonst das Bild ersetzen
    document.getElementById(idToExchange).src = pictureArray[counter];

    // Und den Zähler erhöhen, damit ein anderes Bild angezeigt wird.
    counter++;
  }
}
</script>
Im HTML nacher einfach:

Code: Alles auswählen

<img src="bild.png" id="gross" onclick="exchangePic();" />
Ich hab's jetzt übrigens nicht extra getestet, kann also sein, daß es teilweise doch net so funzt, wie's soll...

Verfasst: Do Jul 03, 2003 11:33 am
von AeternoS
Ich werds mal testen. Scheint einfacher zu sein, als das was ich probiert hab...
Ich habs mit PHP gemacht. Nur erübrigt sich da das Script, was ja nicht Sinn der Sache ist, da ich es mit IDs gemacht hab und da die Seite ja dann auch neu geladen wird. Es sollen sich ja nur die Bilder austauschen. Der Vorteil soll ja sein, dass die Seite nicht neu geladen wird (und nebenbei, was ich ja auch mit dem PHP-Script erreicht hab, dass ich, trotz vieler Bilder, nur eine Seite hab.

Also, ich werds mal versuchen... :roll:

Verfasst: Do Jul 03, 2003 1:25 pm
von AeternoS
Das Script funktioniert leider nicht. Hab alles mögliche versucht aber es scheint einfach nicht zu klappen... :(
Ich bekomm immer ""Fehler auf der Seite"". Wenn ich den Hed-Teil entferne bekomm ich keinen Fehler mehr. Muss also daran liegen.

btw - ist es möglich, den Counter dieses Scriptes bei klick auf Miniatur2 auch auf 2 zu setzen, bei klick auf Miniatur3 auf 3 und bei klick auf Miniatur1 wieder auf 1 damit das da dann auch übereinstimmt?
So dass wenn der Counter dann auf 3 steht und ich auf das grosse Bild klicke dann die neue Seite geladen wird...

Verfasst: Do Jul 03, 2003 4:16 pm
von Katana
Sorry, waren 2 Bugs drinne.

1. ""New Array"" muß natürlich ""new Array"" heißen
2. if (counter = pictureArray.length) ist Schwachsinn und muß ""(counter ==pictureArray.length)"" heißen.

Hab's oben korrigiert, dann funzt's

Verfasst: Fr Jul 04, 2003 6:55 am
von AeternoS
DANKE! Ich tests gleich mal aus! :D

Verfasst: Fr Jul 04, 2003 7:04 am
von AeternoS
Éins könntest du mir noch erklären:
Du hast in deinem letzten Beitrag
Katana hat geschrieben:muß ""(counter ==pictureArray.length)"" heißen.
und da ist kein Leerzeichen hinter dem zweiten =
Oben ist aber eins. Da ich nicht zuerst oben nachgeschaut hab, hab ich das untere übernommen und es funktioniert trotzdem.
Warum? Ich dachte, Javascript achtet auch auf solche pingeligen Kleinigkeiten... :roll:

Und wenn das mit den Miniaturen und dem Counter auf eine bestimmte Zahl setzten geht und du mir noch sagen könntest wie, wär das ganze perfekt! ;)

[edit]
Das mit den Miniaturen hab ich so einigermaßen hinbekommen.
Hab einfach bei der 1. Miniatur

Code: Alles auswählen

counter--;
und bei der zweiten

Code: Alles auswählen

counter++;
drangehängt (beim onclick).

Leider gibts da jetzt ein Problem, wenn noch das erste Bild zu sehen ist und ich auf die erste Miniatur klicke. Dann bringt er beim klick auf das Große Bild (k)ein Bild namens ""Undefined"".
Wie kann ich das noch umgehen?
[/edit]


[edit²]
Okay, habs! (Man muß bedenken, dass ich keinen Plan von Javascript hab! ;) )
Hab jetzt beim ersten

Code: Alles auswählen

counter=0;
und beim zweiten

Code: Alles auswählen

counter=1;
angegeben und es klappt! :D
[/edit²]

Verfasst: Sa Jul 05, 2003 5:21 pm
von Katana
AeternoS hat geschrieben:Éins könntest du mir noch erklären:
Du hast in deinem letzten Beitrag
Katana hat geschrieben:muß ""(counter ==pictureArray.length)"" heißen.
und da ist kein Leerzeichen hinter dem zweiten =
Oben ist aber eins. Da ich nicht zuerst oben nachgeschaut hab, hab ich das untere übernommen und es funktioniert trotzdem.
Warum? Ich dachte, Javascript achtet auch auf solche pingeligen Kleinigkeiten... :roll:
Es kam nicht auf das Leerzeichen an, sondern auf das 2. ""="".

Code: Alles auswählen

if (counter = pictureArray.length)
ist *immer* wahr, da er überprüft, ob er counter den Wert von pictureArray.length zuweisen kann.

Code: Alles auswählen

if (counter == pictureArray.length)
überprüft hingegen (korrekter weise) ob der Wert von counter dem Wert von pictureArray.length entspricht.

Was du mit dem Rest willst (counter festlegen) hab' ich leider nicht ganz verstanden.

Verfasst: So Jul 06, 2003 1:42 pm
von AeternoS
Katana hat geschrieben: Was du mit dem Rest willst (counter festlegen) hab' ich leider nicht ganz verstanden.
Sagen wir mal ich hab 2 Bilder die ich auf der Seite zeigen möchte.
Dafür habe ich auch 2 Miniaturen, damit man sie anzeigen kann.
Wenn das 2. Bild gezeigt wird und ich darauf klicke, soll die Seite gewechselt werden!

Wenn ich auf das erste klicke, soll das 2. gezeigt werden. Ist ja klar.
Jetzt sagen wir mal, ich klicke auf das erste Bild. Dann steht der Counter auf 1. Wenn ich nun auf die erste Miniatur klicke ist wieder das erste Bild da, der Counter steht aber immer noch auf 1 und wenn ich dann auf das große Bild klicke, wird die Seite gewechselt.
Soll ja in dem Fall dann nicht passieren, sondern es soll wieder auf das 2. Bild gewechselt werden.
Ich hoffe ich hab mich nicht zu umständlich ausgedrückt und damit vielleicht verwirrt.
Wenn was unklar ist, einfach fragen! ;)

Verfasst: So Jul 06, 2003 2:01 pm
von Katana
Ich glaube, ich weiß jetzt, was du meinst ;)

Schick mir mal die URL (per PM), dann kann ich's mir mal so angucken ;)

Verfasst: Mo Jul 07, 2003 12:28 pm
von AeternoS
Tja, jetzt kommt das, was mir irgendwie verdammt peinlich ist:
Ich kann nix dafür, ehrlich und ich werde das ganze Javascript Zeug bei nächster gelegenheit verwenden, nur leider wurde ich in dem Fall überstimmt und es wurde die PHP Lösung gewählt... :(
Somit ist leider nix damit! :roll:

Aber ich hab sowieso ne neue Seite im Kopf und da werde ich es ausgiebig verwenden können. Nur wann ich da mal dazu komme ist eben ne gute Frage.
Hoffe, du bist deswegen jetzt nich sauer oder so... :roll:
Aber sobald ich das ganze dann verwendet habe, werde ich dir auf jeden Fall die URL schicken!!! :D

Verfasst: Mo Jul 07, 2003 5:36 pm
von Katana
Brauchst dich net entschuldigen, ist doch ok. ;)

Hätte nur gerne mal die ganze Seite gesehen, die du gebastelt hast, damit ich mir das ganze besser vorstellen kann. Ob's jetzt genutzt wird, oder nicht is eigendlich egal. Ich konnt' mein JavaScript wieder 'n bisschen auffrischen, also hat's doch keinem geschadet ^^

Verfasst: Mi Jul 09, 2003 12:07 pm
von AeternoS
Gut! Das klingt beruhigend! ;)
Aber ich werds auf jeden Fall noch verwenden! :D

Verfasst: Fr Sep 12, 2003 7:58 am
von AeternoS
Ich hätte da nochmal ne Frage:
Wie kann ich es am besten anstellen, dass ich ein großes Bild in der Art mittels 2er Pfeile hin und her auszutauschen (so 3-5 Bilder)?

Ich hab das schon mit dem Counter versucht. Leider bekomme ich das nicht so ganz hin. Wenn ich z.B. bei dem ersten Bild bin und auf den Pfeil für zurück klicke, kommt wieder das ""Nicht-Bild"" namens 'undifined'.
Sollte ja nicht passieren. In dem Fall sollte lediglich gar nix passieren.

Und beim letzten Bild sollte auf ""vorwärts"" auch nix passieren, logischer weise... :roll:

[edit]
Das mit dem klick auf das grosse Bild und das laden einer neuen Seite auf klick des letzten Bildes fällt übrigens weg. Dürfte das ganze auch etwas erleichtern, oder? ;)
[/edit]

Verfasst: Sa Sep 13, 2003 2:58 pm
von Katana
So, fertig :D

Code: Alles auswählen

<script type="text/javascript"> 
// Die folgenden Parameter sind zum ändern gedacht: 

// Eine "Liste" mit den Bild-URL erstellen, 
// welche angezeigt werden sollen 
var pictureArray = new Array('bild1','bild2','bild3'); 

// Die ID des IMG-Tags, bei welchem 
// die Bilder ausgetauscht werden sollen 
var idToExchange = 'gross';

// Ab hier nix ändern (außer evtl. window.open()) 

// Welches Bild wird aktuell angezeigt
var currentPicNr = 0; 

// Zeigt das Bild mit der Nr. "nr" gross an
function showPic(nr) {
	document.getElementById(idToExchange).src = pictureArray[nr];
}

// Zeigt das nächste Bild in der Reihenfolge an
function nextPic() {
	// Zähler erhöhen (da nächstes Bild)
	currentPicNr++;
	
	// Überprüfen ob "currentPicNr" auf ein gültiges Bild verweist
	if (currentPicNr >= pictureArray.length) {
		currentPicNr--;
		return;
	}
	
	// Bild anzeigen
	showPic(currentPicNr);
}

// Zeigt das vorherige Bild an
function previousPic() {
	currentPicNr--;
	if (currentPicNr < 0) {
		currentPicNr++;
		return;
	}
	showPic(currentPicNr);
}

// Zeigt das letzte Bild an
function lastPic() {
	// Springt auf den letzten Eintrag (n-1)
	// Sollten 10 Einträge vorhanden sein,
	// gibt .length 10 zurück, es sind aber
	// Einträge von 0-9 vorhanden, daher -1
	currentPicNr = pictureArray.length-1;
	
	showPic(currentPicNr);
}

// Zeigt das erste Bild an
function firstPic() {
	// Springt auf den Eintrag 0 (der erste Eintrag,
	// man fängt hier aber immer bei 0 an zu Zählen)
	// im Array currentPicNr.
	currentPicNr = 0;
	
	showPic(currentPicNr);
}

</script>
Hab's - mal wieder - nicht getestet, sollte aber funzen *hoff*

Es sind 4 Funktionen geworden, mit denen du durch die Bilder navigieren
kannst.

firstPic() - Zeigt das erste Bild an
previousPic() - Zeigt das vorherige Bild an
nextPic() - Zeigt das nächste Bild an
lastPic() - Zeigt das letzte Bild an

Im HTML kann das dann so aussehen:

Code: Alles auswählen

<input type="button" value="|<" onclick="firstPic();">
<input type="button" value="<" onclick="previousPic();">
<input type="button" value=">" onclick="nextPic();">
<input type="button" value=">|" onclick="lastPic();">

Verfasst: Mo Sep 15, 2003 6:46 am
von AeternoS
Hey, danke! Werd's gleich mal einbauen! ^^