Variableninhalt per Klick an eine andere Variable übergeben
Hes
- javascript
Hallo,
ich bin verzweifelt (sind wir das nicht alle?). Also, ich hatte ursprünglich gehofft, alle Probleme mit PHP zu lösen, mußte nun aber feststellen, dass PHP die Sprache der Formulare ist, ich aber meine Sachen mit Links aufrufen möchte / muss *seufz*. Was will ich tun?
Ich habe 50 kleine, unterschiedliche Texte
Ich habe 50 kleine, unterschiedliche Buttons (Links)
<a href="javascript:??">text01 an Zielstelle schicken</a>
die dafür sogen sollen, dass immer nur einer dieser Texte an einer bestimmten Stelle ausgegeben wird, nämlich an dieser:
<div id="text_container">
<SCRIPT LANGUGAGE="JavaScript">
document.write('text_container','Inhalt aufgerufene Variable')
</SCRIPT>
</div>
Ja, in meinem Code fehlt so einiges. Leider habe ich überhaupt keine Ahnung, wie ich da mit getElementById (vermutlich?) eine Funktion häkeln muss, die mir den Text an dieser einen Stelle in meinem Dokument per Klick (Link) austauscht. Kann mir jemand helfen? Es ist ein Kunstprojekt und ich habe nur noch wenige Tage Zeit...
Bitte, bitte - Hes
Hallo Hes,
dass PHP die Sprache der Formulare ist, ich aber meine Sachen mit Links aufrufen möchte / muss *seufz*.
Ich hab einige Schwierigkeiten, dein Anliegen zu verstehen, deswegen waere es sicher gut, wenn du es etwas klarer formulieren wuerdest, mit mehr Beispielen usw.
Das PHP die Sprache der Formulare ist, kann man so nicht sagen. Ein sehr wesentlicher Unterschied zwischen PHP und Javascript besteht darin, dass PHP auf dem Server, Javascript hingegen im Browser ablaeuft. In der Konsequenz bedeutet das ua., dass wenn du einzelne Inhalte einer Seite mit PHP aendern willst, du diese erst an den Server schicken musst, der dann dann die geaenderte Seite ausgibt. Mit Javascript hingegen kannst Du Seiten aendern, die bereits im Browser angezeigt werden. Die Kehrseite ist, dass der Besucher der Seite moeglicherweise Javascript abgeschaltet hat, und deine Programmierung dann ins Leere geht. Dass Javascript insbesondere von aelteren Browsern nicht auf die gleiche Art wie von modernen Browsern unterstuetzt wird, ist heute nicht mehr so wahnsinning problematisch.
Ich habe 50 kleine, unterschiedliche Texte
Ich habe 50 kleine, unterschiedliche Buttons (Links)
<a href="javascript:??">text01 an Zielstelle schicken</a>
Das klingt sehr nach Javascript. Wenn ich dich recht verstehe ist es so, dass man durch Klicken eines Links oder Buttons den Text an irgeneiner Stelle der Seite aendern koennen soll. Die oeben genannten Bedenken gegenueber Javascript will ich mal aussen vor lassen.
<div id="text_container">
Du hast also ein Element, dass du ueber seine id ansprechen kann. Eine Referenz auf dieses Object erzeugst Du mit document.getElementById("text_container");
<SCRIPT LANGUGAGE="JavaScript">
Einmal sollte das heissen <script type="text/javascript">. Zum andern ist es so, dass Du die gleiche Aktion mehrfach ausfuehren willst, aber mit unterschiedlichen Inhalten und moeglicherweise verschiedenen Zielelementen. Du packst das demnach besser in eine Funktion. Zum dritten waere der Script-Teil am besten im <head> oder ausserhalb der Seite aufgehoben.
document.write('text_container','Inhalt aufgerufene Variable')
document.write kannst Du nur beim Laden der Seite aufrufen, nicht in einer fertigen Seite. Wenn Du schon vorher weisst, was an einer bestimmten Stelle stehen soll, kannst Du auch gleich PHP nehmen. Das ginge vielleicht am besten so, dass du alle Texte in eine ini-Datei schreibst
[meineTexte]
1 = "mein neuer text"
2 = "mein anderer text" etc.
Die Inhalte der ini-Datei liesst Du dann mit parse_ini_file('Pfad/zur/Datei') in ein Array $meine_texte ein und gibst sie an gegebener Stelle so aus:
<div id="meinDiv">
<?php print $meine_texte[1] ?>
</div>
woraufhin, dann in div "mein neuer text" stuende
Aber zurueck zu Javascript. Mit dem bisher beschriebenen Weg waerst Du etwa soweit:
<head>
[.. was so alles in den head gehoert ..]
<script type="text/javascript">
function aendereInhalte (ziel, text)
{
document.getElementById(ziel).innerHTML = text;
// man kann diese Funktion auch auf andere Arten machen, aber zumindest in IE und
// Firefox wuerde das hier funktionieren. Behalte das mal so im Kopf, weil ich mich
// gleich wieder darauf beziehen werde
}
</script>
</head>
Jetzt hast du irgendwo im <body> ein nahezu beliebiges Element, (<div>,<img>,<button> sind diesbezueglich wohl die gaengigsten), auf das du klickst, um den Inhalt eines anderen Elements, zB. 'text_container' zu aendern. Das sieht dann so aus:
<button type="button" onclick="aendereInhalte('text_container', 'mein neuer Text')">Beispiel</button>
Ein Klick auf diesen button/div/wie-auch-immer ruft jezt die Funktion 'aendereInhalte()' auf und uebergibt 'text_container' als 'ziel' und 'mein neuer Text' als 'text'. Die Funktion schnappt sich das Element 'text_container' und ersezt dessen Inhalt durch 'mein neuer Text'.
Du kannst auch noch eins draufsetzten und die Argumente der Funktion per PHP einfuegen. Im Klartext, wenn deine Texte aus einer Datenbank/Textdatei/ini-Datei/wie-auch-immer kommen und auf dem Server schon bekannt sind, koenntest Du, um bei den bereits genannten Beispielen zu bleiben
<button type="button" onclick="aendereInhalte('text_container', '<?php print $meine_texte[1] ?>')">Beispiel</button> in deine PHP-Datei schreiben
Kann mir jemand helfen? Es ist ein Kunstprojekt und ich habe nur noch wenige Tage Zeit...
Wenn ich mir die Kritik erlauben darf, wieso faellt Dir das jetzt erst ein?
Gruß,
Dieter