Computerhilfen.de Logo
Forum
Tipps
News
Frage stellen

HTML - Onclick Bedingung

Hallo,

ich habe folgendes Problem.

Ich erstelle ein HTML-Formular zu einer Umfrage. Dazu sind mehrere Auswahlmöglichkeiten bei der betreffenden Frage möglich. In dem Fall zwischen 1 und 6. Wird ein Wert höher als 3 ausgewählt und zur nächsten Frage mittels Button-Klick gegangen, soll vorher ein Textfeld erscheinen, bei der nähere Erläuterungen eingetragen werden können.

Dies versuche ich mittels OnClick-Methode zu realisieren. Das Code-Fragment sieht wiefolgt aus:

<form action="<?=$action?>" method="post">
<table>
        <tr><td>Wie stark identifizieren Sie sich mit Ihrem Unternehmen?&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(1 = sehr stark, 6 = sehr schwach)</td></tr>
        <tr><td><input type="radio" name="Auswahl2" value="1" '; if ($_POST['fragen'][$i+$offset]==2) echo 'checked="checked" '; echo'/><span>1</span></td> </tr>
        <tr><td><input type="radio" name="Auswahl2" value="2" '; if ($_POST['fragen'][$i+$offset]==3) echo 'checked="checked" '; echo'/><span>2</span></td> </tr>
        <tr><td><input type="radio" name="Auswahl2" value="3" '; if ($_POST['fragen'][$i+$offset]==2) echo 'checked="checked" '; echo'/><span>3</span></td> </tr>
        <tr><td><input type="radio" name="Auswahl2" value="4" '; if ($_POST['fragen'][$i+$offset]==3) echo 'checked="checked" '; echo'/><span>4</span></td> </tr>
        <tr><td><input type="radio" name="Auswahl2" value="5" '; if ($_POST['fragen'][$i+$offset]==2) echo 'checked="checked" '; echo'/><span>5</span></td> </tr>
        <tr><td><input type="radio" name="Auswahl2" value="6" '; if ($_POST['fragen'][$i+$offset]==3) echo 'checked="checked" '; echo'/><span>6</span></td> </tr>
</table>
<br/>

<script type="text/javascript">
function onoff () {
  if (document.getElementById)
    document.getElementById("Verweis").style.visibility = "visible";
}
</script>
<input type="button" name="Verweis" value="auf Seite 5 gehen"
      onclick="javascript:onoff ()">



</form>

Das funktioniert jedoch leider nicht und der Button reagiert beim Klicken nicht.

Was kann ich tun bzw. was muss ich verändern?


Antworten zu HTML - Onclick Bedingung:

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Hi,

ist das der Quelltext, wie ihn der Browser erhält?

Da ist nämlich eine ganze Menge PHP-Code drin enthalten. Der sollte eigentlich nicht im HTML-Code ausgegeben werden. Das Problem musst Du also als erstes mal beseitigen. Sonst kann es nicht funktionieren.

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Nein, es ist eine ".php." Datei.

Die Darstellung des Codes im Browser schaut ja so aus, wie ich es erstmal möchte, nur die Button-Funktion funktioniert leider nicht.

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Dann poste doch mal bitte den Quelltext so, wie er im Browser ausgegeben wird (FireFox: Strg+U IE:Seite > Quellcode anzeigen).

Schließlich hast Du ja, Deinem Posting nach zu urteilen, ein Javascript-Problem. Da interessieren die PHP-Bestandteile nicht und verwirren auch nur.

Außerdem habe ich den Eindruck, dass Du nur einen Teil des benötigten Quellcodes gepostet hast.  Sonst ergibt nämlich das "<?=$action?>" keinen Sinn und es fehlt der erste echo-Befehl.

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Okay, dann hab ich hier den ausgegebenen Quellcode im Firefox:

<html>
<head>
<title>Mitarbeiterbefragung</title>

<h1>MAB2011 v. 1.0</h1>

</head>
<body text="#000000" bgcolor="#FFFFFF" link="#FF0000" alink="#FF0000" vlink="#FF0000">
<br />
<form action="<?=$action?>" method="post">
<table>
        <tr><td>Wie stark identifizieren Sie sich mit Ihrem Unternehmen?&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(1 = sehr stark, 6 = sehr schwach)</td></tr>

        <tr><td><input type="radio" name="Auswahl2" value="1" '; if ($_POST['fragen'][$i+$offset]==2) echo 'checked="checked" '; echo'/><span>1</span></td> </tr>
        <tr><td><input type="radio" name="Auswahl2" value="2" '; if ($_POST['fragen'][$i+$offset]==3) echo 'checked="checked" '; echo'/><span>2</span></td> </tr>
        <tr><td><input type="radio" name="Auswahl2" value="3" '; if ($_POST['fragen'][$i+$offset]==2) echo 'checked="checked" '; echo'/><span>3</span></td> </tr>
        <tr><td><input type="radio" name="Auswahl2" value="4" '; if ($_POST['fragen'][$i+$offset]==3) echo 'checked="checked" '; echo'/><span>4</span></td> </tr>
        <tr><td><input type="radio" name="Auswahl2" value="5" '; if ($_POST['fragen'][$i+$offset]==2) echo 'checked="checked" '; echo'/><span>5</span></td> </tr>

        <tr><td><input type="radio" name="Auswahl2" value="6" '; if ($_POST['fragen'][$i+$offset]==3) echo 'checked="checked" '; echo'/><span>6</span></td> </tr>
</table>
<br/>

<script type="text/javascript">
function onoff () {
  if (document.getElementById)
    document.getElementById("Verweis").style.visibility = "visible";
}
</script>
<input type="button" name="Verweis" value="auf Seite 5 gehen"
      onclick="javascript:onoff ()">



</form>



</body>
</html>
 

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Ok, das hab ich mir gedacht. Du hast ganz offensichtlich schon im PHP-Code massive Fehler. Sonst käme es nicht zu solchen Zeilen wie

<?=$action?>oder
'; if ($_POST['fragen'][$i+$offset]==2) echo 'checked="checked" '; echo'die im HTML-Code gar nicht mehr auftreten dürfen, weil es eigentlich PHP-Code ist. Das sieht so aus als wenn Du irgendwo die echo-Anweisungen mit öffnenden und schließenden PHP-Tags (<?php ?>) vermischst. Das geht natürlich überhaupt nicht und mit dem Code der dabei rauskommt kann der Browser nichts anfangen und deshalb ignoriert er es und Dein Script funktioniert nicht. Ich bin ja schon verwundert, dass keine Syntax-Fehlermeldungen erscheinen.

Die Beseitigung dieser Fehler solltest Du selbst hinbekommen oder lieber die Finger von der PHP-Programmierung lassen , weil zu gefährlich (Siehe hier z.B. die Punkte "Einführung", "SQL-Injection", "Vom Nutzer übermittelte Daten").

Wenn Du übrigens Code hier einstellst, ist dieser besser lesbar, wenn Du ihn zwischen

[code]
und
[/code]

stellst.

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

das so nen typischer javascript mix den ich für total unangebracht halte.

1. du hast in der tabelle die öffnenden und schliessenden php tags vergessen.
2. shorttags sollte man nicht nutzen da sie nicht immer unterstützt werden (also lieber immer <?php als <?)
3. im formular hast du überall checked stehen, wozu?
4. $_POST['fragen'][$i+$offset]==2 ist ein mehrdimensionales array, abgesehen davon dass sämtliche $_POST eingaben als string rüberkommen und sich damit sowieso schlecht rechnen lässt, stellt sich mir die frage warum dann immer noch jede einzelne zeile abfängst.
5. das textfeld in dem die user dann ihre erläuternden eingaben machen sollen fehlt vollständig. wo sollte es also herkommen?
____________________-
warum definierst nicht einfach eine textarea der beim aufruf via css invisible udn hidden zuweist und nur beim onclick auf die radio buttons > 3 erscheinen lässt?
(wenn schon mit js hantierst, warum lässt den user dann noch klicken? übrigens deplatziert, gibt auch leute die drücken dann einfach enter zum abschicken)

ich nehme malan du hast aus leserlichkeitsgründen die klammern hinter der if abfrage weggelassen. schöner hätte ich es gefunden wenn dir  direkt die tabelle gespart hättest. den zeilenumbruch hättest auch mit einem simplen <br/> erreichen können.

offensichtlich hast du aber weder von js, html, css geschweige denn php grundkenntnisse

<body text="#000000" bgcolor="#FFFFFF" link="#FF0000" alink="#FF0000" vlink="#FF0000">??
guckst du www.sehlfhtml.de weil die wenigen zeilen sind schon so versemmelt dass man das schneller neu tippt als die fehler zu beheben.

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Okay, ich habe auch nicht wirklich viel Ahnung von der ganzen Webprogrammierung.

Ich versuche nur einem Kommilitonen bei seiner Hausarbeit zu helfen, der damit überfordert ist.

Den Code haben wir fragmentweise aus vorgaben des Dozenten übernommen und haben ihn auch nicht wirklich verstanden, wie z.B.

if ($_POST['fragen'][$i+$offset]==2) echo 'checked="checked" '; echo'
Kann das "Action" bei <Form> dann ganz wegleiben?

Den Code-Teil mit dem Javascript habe ich nur im Internet gefunden und versucht zu integrieren. Die CSS-Variante ist dann also die einfachste?

**Edit: Also ich habe jetzt mal den ganzen unverständlichen Code-Kram herausgenommen. Das schaut jetzt einfacher und übersichtlicher aus:
<html>
<head>
<title>Mitarbeiterbefragung</title>

<h1>MAB2011 v. 1.0</h1>

</head>
<body>
<br>
<form method="post">

WWie stark identifizieren Sie sich mit Ihrem Unternehmen?&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(1 = sehr stark, 6 = sehr schwach)
<br>
<br><input type="radio" name="Auswahl2" value="1" <span>1</span>

<br><input type="radio" name="Auswahl2" value="2" <span>2</span>
<br><input type="radio" name="Auswahl2" value="3" <span>3</span>
<br><input type="radio" name="Auswahl2" value="4" <span>4</span>
<br><input type="radio" name="Auswahl2" value="5" <span>5</span>
<br><input type="radio" name="Auswahl2" value="6" <span>6</span>
<br>
<input type="button" name="Verweis" value="auf Seite 5 gehen"
      onclick="location.href='Seite5.php'">
</form>


</body>
</html>

Und nun brauche ich nur noch die Lösung, wie sich ein Textfeld öffnet, wenn jemand 3 oder schlechter anklickt.
« Letzte Änderung: 20.02.11, 15:53:12 von calli23 »

Ist zumindest auch aus meiner Sicht die beste Variante.

Zitat
Kann das "Action" bei <Form> dann ganz wegleiben?
Nein, action ist ein Pflichtattribut, was definiert, wohin die Formulardaten gesendet werden sollen.

Solltest wirklich unbedingt den Link von @strough lesen. Ist für Anfänger die allerbeste Adresse.

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

lass das formular erst mal so liegen (geht halbwegs in ordnung)
dann erstelle neue datei; aufgabenstellung

auf onclick soll sich ein textarea feld öffnen.
(also ist da, nur via css direkt auf visibility:hidden und display:none setzen) und dass biest dann via click erscheinen lassen.

so lernst das. und wenn das hinbekommen hast baust das in dein formular ein.  auswertung log. wie die anderen felder (es ist ja vorhanden, nur nicht für den user sichtbar.)

diese onclick bedingung kannst in die radiobuttons > 2 (also 3) einbauen und das bei den niedrigen wieder verschwinden lassen.
käme  noch die prüfung ob das feld sichtbar ist oder nicht aber das kannst glaub für eine schulübung vernachlässigen.

diese if anweisung gibts bei dir übrigens gar nicht da deine buttons "Auswahl2" heissen (warum auch immer)
du könntest denen auch einfach numerische werte zuweisen, aber dran denken dass die als string ankommen. rechnen funktioniert so zwar aber so die feine art ist es nicht.

das php ding sieht aus als hätte es mal eine schleife werden sollen. hat er wohl schlecht erklärt oder du hast nicht aufgepasst ;):P
wobei das $offset total deplatziert ist. ich glaub deinem lehrer würden hier viele gern nachhilfe geben^^

edit: das span ist sinnbefreit udn du schliesst den tag vom button nicht.
beim submit dieses

"location.href='Seite5.php'"ist auch sinnbefreit. funktioniert nicht bei js deaktivierern (wie ich es bin^^) und erreichst auch ohne diese anweisung. das formular wird an die addy geschickt die im öffnenden formtag unter action definierst.
also in deinem fall
<form action="Seite5.php" method="post">
« Letzte Änderung: 20.02.11, 17:42:56 von strough »

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button
<html>
<head>
<title>Mitarbeiterbefragung</title>
<link rel="stylesheet" type="text/css" href="stylesheet.css">
<style type="text/css">
</style>

<h1 align="center">MAB2011 v. 1.0</h1>

</head>
<body>
<br>
<form method="post">

Wie effizient wird Ihrer Meinung nach in diesem Unternehmen gearbeitet?&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(1 = sehr effizient, 6 = sehr ineffizient)
<br>
<br><input type="radio" name="Auswahl2" value="1">1
<br><input type="radio" name="Auswahl2" value="2">2
<br><input type="radio" name="Auswahl2" value="3">3
<br><input type="radio" name="Auswahl2" value="4">4
<br><input type="radio" name="Auswahl2" value="5">5
<br><input type="radio" name="Auswahl2" value="6">6
<br>
<textarea name="user_eingabe" cols="50" rows="10"></textarea>
<br>
<input type="button" name="Verweis" value="auf Seite 9 gehen"
      onclick="location.href='Seite9.php'">
</form>



</body>
</html>

Okay, das Ganze schaut jetzt so aus, nur wie bringe ich genau diese If-Bedingung dann hinein? In der CSS-Datei habe ich textarea auf display:none gesetzt und es ist auch weg erstmal.

Ich weiß ja, wie if-Bedingungen aufgebaut sind, nur wie drücke ich aus, dass display dann nicht mehr none (heißt das dann "inline"?) ist, wenn ein Button >3 ausgewählt wird?

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

zum verstecken

visibility:hidden;
display: none;
und wird angezeigt mit:
visibility:visible;
display:inline;
aber stöber wirklich malbitte  ein wenig auf www.selfhtml.de, da gibts generell viel lesenswertes, gerade für leute die sich jetzt damit nicht soooo auskennen.
______________________
und, denkfehler. die ifschleife bringt dir nichts. du willst das ganze ja mit js realisieren (ohne reload der seite).
du schreibst einfach 2 funktionen. textarea zeigen/nicht zeigen. das zeigen ab bewertung von 3 aufwärts und bei den anderen schreibst dann onclick = nö.
______________________
die ganzen radiobuttons hättest in einer forschleife generieren können, aber wozu jetzt noch? hast die doch bereits getippelt.
« Letzte Änderung: 21.02.11, 05:45:16 von strough »

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Ich habe mich jetzt einige Zeit mit selfhtml und Javascript beschäftigt, und zwar insoweit, dass ich versuchen kann, eine Lösung zu finden zu dem Onclick-Problem. Das klappt jedoch noch nicht wie gewünscht.

Mein Script sieht wiefolgt aus:

<script text="JavaScript" style="text/javascript">
function display(element) {
       document.getElementById(element).style.display = 'block';
}
</script>

Das Textfeld und die Onclick-Umsetzung im Button dann so:
<textarea name="eingabe" cols="50" rows="10" style="display:none"></textarea>
<br>
<input type="button" name="Verweis" value="Textfeld einblenden"
    onclick="display('eingabe')">

Jedoch passiert nichts, wenn ich den  Button anklicke. Auch wenn ich das "display:none" via CSS definiere.

**EDIT:

So, nach vielem Probieren und Lesen ist dieses Problem nun endlich gelöst. Falls mal jemand das gleiche Problem haben sollte und nicht weiterkommt, poste ich hier nochmal den Code dafür:
<html>
<head>
<title>Mitarbeiterbefragung</title>
<link rel="stylesheet" type="text/css" href="stylesheet.css">
<style type="text/css">
</style>

<h1 align="center">MAB2011 v. 1.0</h1>

</head>
<body>
<br>
<script text="JavaScript" style="text/javascript">
function displayon(element) {
       document.getElementById(element).style.display = 'inline';
       document.getElementById(element).style.visibility = 'visible';
}
function displayoff(element) {
       document.getElementById(element).style.display = 'none';
       document.getElementById(element).style.visibility = 'hidden';
}
</script>
<form name="testform" action="Seite8a.php" method="post">

Wie effizient wird Ihrer Meinung nach in diesem Unternehmen gearbeitet?&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(1 = sehr effizient, 6 = sehr ineffizient)
<br>
<br><input type="radio" name="Auswahl2" value="1" onclick="javascript: displayoff('eingabe');">1
<br><input type="radio" name="Auswahl2" value="2" onclick="javascript: displayoff('eingabe');">2
<br><input type="radio" name="Auswahl2" value="3" onclick="javascript: displayoff('eingabe');">3
<br><input type="radio" name="Auswahl2" value="4" onclick="javascript: displayon('eingabe');">4
<br><input type="radio" name="Auswahl2" value="5" onclick="javascript: displayon('eingabe');">5
<br><input type="radio" name="Auswahl2" value="6" onclick="javascript: displayon('eingabe');">6
<br>
<textarea id="eingabe" cols="50" rows="10"></textarea>
<br>
<input type="button" name="Verweis" value="Textfeld einblenden"
    onclick="location.href='Seite9.php'">
</form>

</body>
</html>
« Letzte Änderung: 23.02.11, 20:21:47 von calli23 »

« Zugriffprobleme nkdir PHPWebseiten in Opera zentrieren »
 

Schnelle Hilfe: Hier nach ähnlichen Fragen und passenden Tipps suchen!

Fremdwörter? Erklärungen im Lexikon!
Browser
Der Browser oder Webbrowser ist das Programm, dass die HTML - Befehle einer Internetseite mit Bildern, Videos und Texten auf dem Bildschirm anzeigt. Der Browser ist also ...

Webbrowser
Siehe auch Browser. ...

Browser Verlauf
Der Browser-Verlauf zeigt die zuletzt im Browser besuchten Webseiten an: So hat man leicht Zugriff auf die Seiten, die man schon einmal angesehen hatte. Je nach Browser h...