Sebastian Becker: Submitbutton & Rollover

Beitrag lesen

Hallo, Boris,

kannste mir im groben erklären, wie das beispielscript abläuft?
Ich verstehe zwar, dass mit document.write() eine ausgabe erfolgt,
aber nicht woher das JS weiss, wohin.

Der Link wird deshalb mit JavaScript erzeugt, weil der Aufruf "form1.submit()" nur mit JavaScript funktioniert und der Link daher auch nur bei aktiviertem JavaScript angezeigt werden soll. Andernfalls wird der Submit-Befehl mit dem im Noscript-Tag stehenden Button erzeugt. Zumindest funktioniert es so in dem von Dir geposteten Skript - ich weiß nicht, ob Du es so haben willst.

Formulare werden immer an die durch "action" definierte URL geschickt, ganz egal wie sie aufgerufen werden. Das JavaScript muss daher eigentlich nicht "wissen", wohin das Formular geschickt wird. Allerdings könnte man mit JavaScript den "action"-Parameter auslesen oder manipulieren.

Die Rolle von javascript:form1.submit() ist mir auch nicht ganz klar.
Kann ich z.B. an anderer Stelle im HTLM mit javascript:form2.submit()
auf ein beliebiges Form verweisen?

Du kannst natürlich an jeder beliebigen Stelle im HTLM-Code Deiner Seite z.B. mit "javascript:form1.submit()" oder "javascript:form2.submit()" ein Formular mit dem entsprechenden Namen absenden - immer mit der Einschränkung, daß JavaScript aktiviert ist.

Die meisten Rollover-hilfen hier im forum beziehen sich auf normale
<img>-Tags, die durch <a>-Tags eingeklammert sind. Das hilft aber
m.E. nicht weiter, weil ich doch wohl ein <input>-Tag brauche.

Das input-Tag muß ins Formular, und die Rolloverfunktion hast Du ja schon. Nicht vergessen, das Bild vorzuladen!

Nun kämpfe ich noch mit den beiden problemen, dass ich zwei sendebuttons
habe und dass ich die gedrückten buttons identifizieren kann.

Du könntest z.B. ein verstecktes, d.h. nicht sichtbares, Inputfeld in Deinem Formular anlegen, dessen Wert in Abhängigkeit von dem Link, mit dem Du das Formular absendest, geändert wird.

Dein Code sähe dann in etwa so aus (ungetestet) ...

<script language=JavaScript>
<!--
// preload images
if(document.images)
{
bild1 = new Image();
bild1.src = "bild1.gif";
bild1_over = new Image();
bild1_over.src = "bild1_over.gif";

bild2 = new Image();
bild2.src = "bild2.gif";
bild2_over = new Image();
bild2_over.src = "bild2_over.gif";
}
// -->
</script>

<a href="losgehts.cgi?parameter=1" onClick="document.form1.parameter.value='1';form1.submit();return false;" onMouseover="bild1.src='bild1_over.gif'" onMouseout="bild1.src='bild1.gif'"><img src="bild1.gif" name="bild1"></a>

<a href="losgehts.cgi?parameter=2" onClick="document.form1.parameter.value='2';form1.submit();return false;" onMouseover="bild2.src='bild2_over.gif'" onMouseout="bild2.src='bild2.gif'"><img src="bild2.gif" name="bild2"></a>

<form action="losgehts.cgi" method="get" id="form1" name="form1">
<input type="hidden" value="" name="parameter">
<noscript><input type="submit" value="senden"></noscript>
</form>

In den Link habe ich als URL Dein "losgehts.cgi" eingesetzt, dem ich noch den Parameter übergeben habe, damit die Information über das angeklickte Bild auch ohne JavaScript an das serverseitige Skript weitergeleitet wird. Diese URL wird wegen des "return false" bei aktiviertem JavaScript nicht übergeben.

Wenn bei Deinem Server PHP aktiviert ist, würde ich die Auswertung übrigens mit PHP vornehmen.

Grüße,

Sebastian