WinFuture-Forum.de: Inhalt Eines Divs Tauschen - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

Inhalt Eines Divs Tauschen


#1 _BigTim_

  • Gruppe: Gäste

geschrieben 12. Januar 2010 - 09:41

Hallo!
Ich würde gern die Möglichkeit haben, durch klick auf einen Link, welcher sich in einem Div befindet, den Inhalt in diesem Div auszutauschen.

Erst soll dort ein Bild erscheinen, klickt jemand dadrauf hätte ich gern das nächste Biild.

Hat da jemand eine Idee?

Grüße
0

Anzeige



#2 Mitglied ist offline   martin_mt 

  • Gruppe: aktive Mitglieder
  • Beiträge: 515
  • Beigetreten: 19. August 02
  • Reputation: 0
  • Geschlecht:Männlich

geschrieben 12. Januar 2010 - 10:25

schau dir mal die grundlegenden ajax tutorials an .
statt dem text, der dort immer geladen wird, kannst du selbstverständlich auch bilder laden ...
0

#3 Mitglied ist offline   DarkAlucard 

  • Gruppe: aktive Mitglieder
  • Beiträge: 465
  • Beigetreten: 04. Dezember 09
  • Reputation: 5
  • Geschlecht:Männlich

geschrieben 12. Januar 2010 - 10:50

Also "Div Tauschen" Beispiel:

<div id=div1><a href=java script:tauscheBild()>Hier steht ein Link</a></div>

<script>

function tauscheBild(){
var object = document.getElementById("div1");
var austausch = "Hier ist der neue Text, z.B. ein Bild: <img src='./test.jpg'>";
object.innerHTML= austausch;
}

</script>


der Rest sollte kein weiteres Problem sein :veryangry:


Achja das ist zwar nicht "schön" gecodet, aber es funktioniert :)

EDIT: ich weiß nicht wieso aber hier wird javascript als Wort automatisch getrennt, in <a href... bitte javascript ZUSAMMEN schreiben.

Dieser Beitrag wurde von DarkAlucard bearbeitet: 12. Januar 2010 - 11:13

Du benutzt VMware Server 2, aber das Webplugin um auf die VMs zuzugreifen nervt dich extrem?
Probier meine GUI, den VMRConnector
(Alucards Vmware Vmrc-gui)
Eingefügtes Bild
0

#4 Mitglied ist offline   zwutz 

  • Gruppe: aktive Mitglieder
  • Beiträge: 654
  • Beigetreten: 17. Juli 07
  • Reputation: 1
  • Geschlecht:Männlich

geschrieben 12. Januar 2010 - 11:54

rein theoretisch nicht schwer, wenn du im Vorfeld weißt, welche Bilder wann kommen. Dann benötigst du kein AJAX, sondern nur eine simple JS-Funktion, wie sie DarkAlucard gepostet hat (auch wenn ich ehrlich gesagt auf innerHtml verzichten würde, aber das ist hier erstmal nicht wichtig)

Immer beachten: es gibt User ohne JS, stell für die also eine separate Galerie zur Verfügung.

Ohne AJAX:
<div id="div1"><img src="images/bild1.jpg" /></div>
<!-- im href der Link für die ohne JS, onclick für die mit JS.
 return false sorgt dafür, dass die href-Angabe ignoriert wird //-->
<a href="galerie.html" onclick="tauscheBild(); return false">Klick mich!</a>


<script>

function tauscheBild()
{
  // div "holen"
  var object = document.getElementById("div1");
  // und leeren, falls was drinstehen sollte
  while (object.hasChildNodes())
  {
	object.removeChild(object.firstChild);
  }

  // Bild-Knoten erzeugen
  var imgtag = document.createElement("img");
  var srcattr = document.createAttribut("src");
  srcattr.nodeValue = "images/bild2.jpg";
  imgtag.setAttributNode(srcattr);
  object.appendChild(imgtag);
}

</script>


damit wird das angzeigte bild1.jpg durch bild2.jpg ausgetauscht. Du kannst auch das aktuell angezeigte Bild ermitteln und daraufhin das nächste anzeigen


Etwas schwieriger wirds, wenn du die im Vorfeld nicht weißt, welches Bild hinkommen soll und die Auswahl einem php-Skript überlassen willst. Hierfür benötigst du AJAX oder zumindest etwas vergleichbares.
Aber das jetzt näher zu erläutern, ist mir ein wenig zu viel. Aber hier mal eine js-Datei, die im groben passen sollte. Was genau was macht, überlass ich dir :veryangry:

var resObjekt = null;
function tauscheBild()
{
  var object = document.getElementById("div1");
  if (object.hasChildNodes())
  {
	var altesBild = object.getElementsByTagName("img")[0].getAttribute("src");
	sndReq(altesBild);
	return;
  }
  
  sndReq("images/bild1.jpg");
}

function erzXMLHttpRequestObject()
{
	var resObjekt = null;
	try
	{
		resObjekt = new ActiveXObject("Microsoft.XMLHTTP");
	}
	catch(Error)
	{
		try
		{
			resObjekt = new ActiveXObject("MSXML2.XMLHTTP");
		}
		catch(Error)
		{
			try
			{
				resObjekt = new XMLHttpRequest();
			}
			catch(Error)
			{
				alert("Erzeugung des XMLHttpRequest-Objekts ist nicht möglich");
			}
		}
	}
	return resObjekt;
}

function sndReq(altesBild)
{
  resObjekt.open('get', 'bildloader.php?altesBild='+altesBild, true);
  resObjekt.onreadystatechange = handleResponse;
  resObjekt.send(null);
}

function handleResponse()
{
  if(resObjekt.readyState == 4)
  {
	// div "holen"
	var object = document.getElementById("div1");
	// und leeren, falls was drinstehen sollte
	while (object.hasChildNodes())
	{
	  object.removeChild(object.firstChild);
	}

	// Bild-Knoten erzeugen
	var imgtag = document.createElement("img");
	var srcattr = document.createAttribut("src");
	srcattr.nodeValue = resObjekt.responseText;
	imgtag.setAttributNode(srcattr);
	object.appendChild(imgtag);
	}
  }
}
resObjekt = erzXMLHttpRequestObject();


Aufruf bleibt gleich, die bildloader.php musst du selber basteln. Sie liefert anhand des parameters 'altesBild' das auf dieses Bild folgende

Alle Angaben ohne Gewähr, da ungetestet und unter Kaffeeentzug zusammengeschustert. Das Funktionsprinzip sollte aber klar sein

Für weitere Details empfehle ich entsprechende Lektüre respektive Tutorials
Raise your glass if you are wrong
0

#5 Mitglied ist offline   Ludacris 

  • Gruppe: Moderation
  • Beiträge: 4.660
  • Beigetreten: 28. Mai 06
  • Reputation: 218
  • Geschlecht:Männlich

geschrieben 12. Januar 2010 - 20:00

ich hab mir jetzt deinen code gerade nicht angesehen, aber so wie ich das verstehe will er eine bildergallerie im stil von den "fotos" auf facebook oder der gallerie hier.... sprich du klickst aufs bild, nächstes bild kommt, klickst drauf, nächstes bild kommt...
daher würde ich es so machen....

<div id=div1><a href=java script:tauscheBild()>Hier steht ein Link</a></div>

<script>

function tauscheBild(){
var object = document.getElementById("div1");
var austausch = "Hier ist der neue Text, z.B. ein Bild: <img src='./test'+i+'.jpg'>";
object.innerHTML= austausch;
i++;
}

</script>


Achtung! die variable i muss noch deklariert werden und ich hab momentan nicht im kopf wie das in js geht. auf jeden fall geht er so durch die bibliothek durch, fangt allerdings bei einem klick auf das bild bei bild 1 an und geht dann weiter auf bild 2...


(ich hoffe man versteht was ich meine)
0

#6 _BigTim_

  • Gruppe: Gäste

geschrieben 13. Januar 2010 - 08:37

Vielen Dank für eure tolle Hilfe! =)

Das hat mich schon weitergebracht! :wacko:
0

#7 _BigTim_

  • Gruppe: Gäste

geschrieben 13. Januar 2010 - 10:05

Kleiner Nachtrag.

Ich habe jetzt das Beispiel aus dem ersten Post verwendet (brauche nur etwas einfaches).
Wie kann ich dort nun einen Flash Player einfügen? Habe diesen benutzt:http://www.longtailvideo.com/players/jw-flv-player/

Der Code sieht so aus:

<object id="player" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" name="player" width="400" height="315">
		<param name="movie" value="player.swf" />
		<param name="allowfullscreen" value="true" />
		<param name="allowscriptaccess" value="always" />

		<param name="flashvars" value="file=video.flv&image=preview.jpg" />
		<embed
			type="application/x-shockwave-flash"
			id="player2"
			name="player2"
			src="player.swf" 
			width="400" 
			height="315"
			allowscriptaccess="always" 
			allowfullscreen="true"
			flashvars="file=video.flv&image=preview.jpg" 
		/>
	</object>



Dieser wird allerdings immer angezeigt, sprich auch wenn man noch nicht geklickt hat... :wacko:

Dieser Beitrag wurde von BigTim bearbeitet: 13. Januar 2010 - 12:24

0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0