Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Javascript onChange

Empfohlene Antworten

Veröffentlicht

Hallöchen,

ich habe in einem PHP-Script eine Select-Box. Wenn man etwas daraus auswählt soll passend auf der Seite eine neue Selectbox generiert werden.

Ich habe hier im Forum schon gesucht und auch einige Anhaltspunkte gefunden (Javascript onChange), aber dass, was ich mir anhand dessen zusammengebastelt habe funktioniert nicht.

Es passiert einfach gar nichts, nur in der Statusleiste des IE taucht das Felhersymbol auf.

Da ich von Javascript absolut null Ahnung habe, würde ich mich freuen, wenn ihr mal über den Quelltext drüberschauen könntet und mir sagen könntet was ich da beachten muss/ falsch mache.

<?php

if (! isset ( $dez ))

{

echo "<div align='center'>" ;

echo "<br><br><font color='#5A78B4'><h2>Gesamtanzeige Hardware</h2>" ;

echo "<b>Bitte wählen Sie aus, was angezeigt werden soll</b></font>" ;

echo "<table width='80%'>" ;

echo "<form name='dez' action='auswahldez.php' method='post'>" ;

echo "<tr><td align='center'><br><select name='dez' size='4' onChange=erneuern(this.form.dez.options[this.form.dez.options.selectedIndex].value)>" ;

echo "<option value='I'>Dezernat I</option>" ;

echo "<option value='II'>Dezernat II</option>" ;

echo "<option value='III'>Dezernat III</option>" ;

echo "<option value='IV/V'>Dezernat IV/ V</option>" ;

echo "</select></td>" ;

echo "</tr>" ;

echo "<tr><td align='center'><br><input type='submit' name='auswahl' value='--> Weiter'>" ;

echo "</td></tr>" ;

echo "<script type=\"language\"> \n" ;

echo "<!-- \n" ;

echo "function erneuern(dez) { \n" ;

echo "window.location.href=\"auswahldez.php?dez=\" + dez + \";" ;

echo "} \n" ;

echo "// -->\n" ;

echo "</script>\n" ;

echo "</form>" ;

echo "</table>" ;

echo "</div>" ;

}

else

{

/* Der Einfachheit halber will ich hier statt das neue Feld zu generieren erstmal nur die Variable ausgeben, anhand derer dann das Feld generiert wird */

echo "<font color='#000000'><h2>* $dez *</h2></font>" ;

}

?>

Für jedwedige Hilfe schonmal im Voraus Danke

Twiggy

ich würde der einfachheit halber mal das ganze ein wenig anders machen

das macht das ganze sehr viel übersichtlicher. danach kann man dir hier bestimmt weiterhelfen.

gruss

kills

if (...)

{

?>

......

dein ganzes html schmodder da

....

<?php

} else [

Verschoben ins Webdesign

Ok, dann halt nochmal in der gewünschten Form.

Ich hatte noch einen kleinen Fehler entdeckt, bei der Einleitung des Javascript-Teils, aber dessen Behebung hat auch nichts gebracht. :-(

Ich hab die entsprechenden Javascript-Teile, um die es mir hier geht mal rot gekennzeichnet, damit man sie schneller findet.

@Wolle: Danke fürs verschieben, war mir auch schon aufgefallen, dass ich irgendwie falsch gelandet bin. :-)


<?php
if (!isset($dez))
{
?>
<div align='center'><br><br>
<font color='#5A78B4'><h2>Gesamtanzeige Hardware</h2>
<b>Bitte wählen Sie aus, was angezeigt werden soll</b></font>
<table width='80%'>
<form name='dez' action='auswahldez.php' method='post'>
<tr>
<td align='center'>
<br><select name='dez' size='4' [COLOR=red]onChange=erneuern(this.form.dez.options[this.form.dez.options.selectedIndex].value)[/COLOR] >
<option value='I'>Dezernat I</option>
<option value='II'>Dezernat II</option>
<option value='III'>Dezernat III</option>
<option value='IV/V'>Dezernat IV/ V</option>
</select>
</td>
</tr>
<tr>
<td align='center'><br><input type='submit' name='auswahl' value='--> Weiter'>
</td>
</tr>

[COLOR=red]<script language='JavaScript'>
<!--
function erneuern(dez)
{
window.location.href="auswahldez.php?dez=" + dez + ";
}
// -->
</script>[/COLOR]

</form>
</table>
</div>
<?php
}
else
{
?>
/* Der Einfachheit halber will ich hier statt das neue Feld zu generieren erstmal nur die Variable ausgeben, anhand derer dann das Feld generiert wird */
<font color='#000000'><h2>* $dez *</h2></font>
<?php
}
?>
[/PHP]

da ist was in der erneuern funktion faul. versuchs mal so:

  window.location.href="auswahldez.php?dez=" + dez; 

Ja, klasse, dann funktionierts.

Vielen Dank!

Dann hab ich noch ne Frage. Wenn ich noch andere Variablen in dem Formular habe, bleiben die beim Neuladen ja nicht bestehen, oder?

Kann ich die dann einfach hier hinter hängen, so wie das was da in türkis steht?

window.location.href="auswahldez.php?dez=" + dez + "&neue_variable=" + neue_variable;

Danke nochmal

Twiggy

klar

Hm, irgendwie ist da noch ein Problem mit der Übergabe mehrerer Variablen an die Funktion, dachte eigentlich, dass das so gehen müsste.

function erneuern(dez, abt)

aber wenn ich das so mache wird die Variable dez mit dem Wert von abt gefüllt und abt mit "undefined".

Habe mir jetzt gedacht, dass es daran liegen könnte, dass die Variable dez beim zweiten onChange nicht mehr gesetzt wird und habe ein hidden-Feld eingebaut, in dem sie dann innerhalb des Formulars nochmal gesetzt wird. Bekomme aber trotzdem immernoch ne falsche Ausgabe.

Ich versteh das nicht. :(


<?php
if (!isset($dez))
{
$abt = "irgendwas";
?>
<div align='center'><br><br>
<font color='#5A78B4'><h2>Gesamtanzeige Hardware</h2>
<b>Bitte wählen Sie aus, was angezeigt werden soll</b></font>
<table width='80%'>
<form name="dez" action='auswahldez.php' method='post'>
<tr>
<td align='center'>
<br><select name='dez' size='4' onChange="erneuern(this.form.dez.options[this.form.dez.options.selectedIndex].value, '<?php echo $abt; ?>');">
<option value='I'>Dezernat I</option>
<option value='II'>Dezernat II</option>
<option value='III'>Dezernat III</option>
<option value='IV/V'>Dezernat IV/ V</option>
</select>
</td>

</tr>
<tr>
<td colspan=2 align='center'><br><input type='submit' name='auswahl' value='--> Weiter'>
</td>
</tr>

<script language='JavaScript'>
<!--
function erneuern(dez, abt)
{
window.location.href="auswahldez.php?dez=" + dez + "&abt=" + abt;
}
// -->
</script>

</form>
</table>
</div>
<?php
}
else
{
?>
/* Der Einfachheit halber will ich hier statt das neue Feld zu generieren erstmal nur die Variable ausgeben, anhand derer dann das Feld generiert wird */
<font color='#000000'><h2>* $dez *</h2></font>
<?php
echo $dez ."-". $abt;

}
?>
[/php]

Tja, wenn ich mir das so ansehe, dann muss ich das wohl doch anders machen.

So sah das bei mir aus, und so funktionierts halt nicht:


<script language='JavaScript'>
<!--
function erneuern(dez, abt)
{
window.location.href="auswahldez.php?dez=" + dez + "&abt=" + abt;
}
// -->
</script>
<?php
if (!isset($abt) and !isset($dez))
{
?>
<div align='center'><br><br>
<font color='#5A78B4'><h2>Gesamtanzeige Hardware</h2>
<b>Bitte wählen Sie aus, was angezeigt werden soll</b></font>
<table width='80%'>
<form name='dez' action='auswahldez.php' method='post'>
<tr>
<td align='center'>
<br><select name='dez' size='4' onChange=erneuern(this.form.dez.options[this.form.dez.options.selectedIndex].value) >
<option value='I'>Dezernat I</option>
<option value='II'>Dezernat II</option>
<option value='III'>Dezernat III</option>
<option value='IV/V'>Dezernat IV/ V</option>
</select>
</td>
</tr>
<tr>
<td align='center'><br><input type='submit' name='auswahl' value='--> Weiter'>
</td>
</tr>
</form>
</table>
</div>
<?php
}
elseif ($abt == "undefined" and isset($dez))
{
?>
<div align='center'>
<br><br><h2><font color='#5A78B4'>Gesamtanzeige Hardware</h2>
<b>Sie haben Dezernat $dez ausgewählt!<br>
Wie wollen Sie weiter verfahren?</b><br><br></font>
<table width='80%'>
<tr>
<td align='center'>Daten des Dezernat $dez<br></td>
</tr>
<tr>
<td align='center'>
<form action='anzeigedez.php' method='post'>
<input type='hidden' name='dez' value='$dez'>
<input type='submit' name='anzeigen' value='anzeigen'>
</form>
</td>
</tr>
</table>
<?php
if ($dez == "I")
{
?>
<table width='80%'>
<tr>
<td align='center'>Abteilung auswählen<br></td>
</tr>
<tr>
<td align='center'>
<form action='auswahldez.php' method='post'>
<select name='abt' size='5' onChange=erneuern(this.form.abt.options[this.form.abt.options.selectedIndex].value)>
<option value='hgf'>HGF, Präsident, Sekretariat</option>
<option value='I/1-1'>Abteilung I/1-1 (PR, Medien)</option>
<option value='I/1-2'>Abteilung I/1-2 (Controlling)</option>
</select><br><br>
<input type='submit' name='auswahl' value='--> Weiter'>
</form>
</td>
</tr>
</table>";
<?php
}
}
else
{
echo "*$dez**$abt*";
//zur Überprüfung
}
?>
[/PHP]

Ich hoffe mein Problem ist verständlich, danke für deine Geduld Art, wäre nett, wenn Du mir das ganze etwas erklären könntest. Also warum das so nicht geht, denn ich würde das schon ganz gerne verstehen, muss das wahrscheinlich noch öfter in meinen PHP-Scripten verwenden und da ist es doch besser wenn man nicht nur copy & paste macht, sondern weiß womit mans zu tun hat.

hi. nuja. bin kein großer künstler im erklären. aber in der section abteilung mußt du dez wieder an erneuern() übergeben.


onChange="erneuern('<?php echo $dez;?>', this.form.abt.options[this.form.abt.options.selectedIndex].value)"
[/php]

allerdings befürchte ich, dass du dich ziemlich verzetteln wirst, wenn du die abteilungen alle mit if anweisungen abfangen willst. wo kommen denn die daten her?

datenbank? datei? wie wärs denn wenn du dezernate und abteilung erstman in ein array packst? aber nix genaues weiss man.

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.