durch einen HTML-Link nur ein DIV neuladen mit anderen Werten

scrotum

Erfahrenes Mitglied
Hallo Community!

Ich bin ganz neu in Javascript, kenne aber Actionscript.

Ich habe folgenden HTML-Code:
HTML:
<body>
<div id="flash"></div>

<div id="code2">
	<script type="text/javascript">
		var so = new SWFObject("ChatZwei.swf", "ChatZwei.swf", "360", "200", "8", "#336699");
		so.addParam("wmode", "transparent");	
                so.addVariable("chapter", "1");	
		so.write("flash");
	</script>
</div>

<ul>
	<li><a href="#" onclick="loadSwf('1')">Kapitel 1</a></li>
	<li><a href="#" onclick="loadSwf('2')">Kapitel 2</a></li>
	<li><a href="#" onclick="loadSwf('3')">Kapitel 3</a></li>
</ul>
</body>

Jetzt möchte ich durch einen Klick, in einer der unteren Links in den Listenelementen, die zu übergebende Variable an Flash ändern.

Also dass nur dieses eine DIV mit dem Flash neu geladen werden muss.

Mein wohl falscher Ansatz:
PHP:
function loadSwf(chapterVar)
{
	document.getElementById("code2").innerHTML += ("<script type='text/javascript'>");
	document.getElementById("code2").innerHTML += ("var so = new SWFObject('chatEins.swf', 'chatEins.swf', '360', '200', '8', '#336699') ");
	document.getElementById("code2").innerHTML += ("so.addParam('wmode', 'transparent')");
	document.getElementById("code2").innerHTML += ("so.write('flash1')");
	document.getElementById("code2").innerHTML += ("so.addVariable('chapter', '" + chapterVar+ "')");			
	document.getElementById("code2").innerHTML += ("</script>");	
}

Oder vielleicht ist der Ansatz schon komplett falsch. Aber wie geht es richtig? Ich hoffe, ihr könnt mir da weiterhelfen.

Gruss
 
Hi,

ich habe zwar noch nie SWFObejct benutzt, aber mir fallen spontan 3 Dinge auf:

1. Du hängst den neuen Script-Block an den Inhalt des Divs an. Du möchtest den Inhalt des Divs aber ersetzen.

2. Du solltest den Script-Block erst komplett in einer String-Variablen zusammensetzen und dann in das Div schreiben.

3. In Deiner Funktion sind diese beiden Zeilen
Code:
so.addVariable("chapter", "1");	
so.write("flash");

vertauscht. Absicht?

LG
 
hm, verstehe nicht ganz. Kannst du einen Code zu deinem Beispiel schreiben?

Wegen dem vertauschen. Ja eigentlich ist das so Absicht. Das ist ja das SWFObject, weiss nicht ob du das kennst. Habe das bisher auch so gemacht.
 
Hi,

das kann so eigentlich gar nicht funktionieren, da der Javascript-Code, den Du da per JS in das Div schreibst, gar nicht interpretiert wird. Das ist in der Form aber eh Quatsch. Ich hab' mal kurz geschaut, wie das zu benutzen ist.
Die Methode "write" des SWFObject-Objektes erwartet eine Element-ID und zwar die, wo das Flash-Objekt eingebettet werden soll, in Deinem Fall "flash"?

Ich denke, das müsste eigentlich ungefähr so aussehen:

HTML:
<head>
<script type="text/javascript">
   function loadSwf(chapter) {
      var so = new SWFObject("ChatZwei.swf", "ChatZwei.swf", "360", "200", "8", "#336699");
      so.addParam("wmode", "transparent");	
      so.addVariable("chapter", chapter);	
      so.write("flash");
   }
</script>
</head>
<body onload="loadSwf('1');">
<div id="flash"></div>

<ul>
	<li><a href="#" onclick="loadSwf('1')">Kapitel 1</a></li>
	<li><a href="#" onclick="loadSwf('2')">Kapitel 2</a></li>
	<li><a href="#" onclick="loadSwf('3')">Kapitel 3</a></li>
</ul>
</body>

Probier's halt mal.

LG
 
Aha, also war mein Ansatz doch komplett falsch. Deine Lösung scheint zu funktionieren.

Vielen Dank für deine Hilfe!
Gruess
 

Neue Beiträge

Zurück