johannes: was ist "document.pressed?"

hallo

ich habe auf folgender seite

[URL]http://www.javascript-coder.com/html-form/html-form-action.phtml[/URL]

ein beispiel gefunden, wie man das action attribut im form tag dynamisch mit javascript ändert. es lautet so:

<SCRIPT language="JavaScript">
function OnSubmitForm()
{
  if(document.pressed == 'Insert')
  {
   document.myform.action ="insert.html";
  }
  else
  if(document.pressed == 'Update')
  {
    document.myform.action ="update.html";
  }
  return true;
}
</SCRIPT>

<FORM name="myform" onSubmit="return OnSubmitForm();">

<INPUT TYPE="SUBMIT" name="Operation" onClick="document.pressed=this.value" VALUE="Insert">

<INPUT TYPE="SUBMIT" name="Operation" onClick="document.pressed=this.value" VALUE="Update">

</FORM>

jetzt frage ich mich was document.pressed für ein befehl ist. ich habe sowas noch nie gesehen und documentation auch nicht dazu gefunden. ist es einfach eine variablendefinition oder javascript syntax? ein objekt von document? weiß jemand mehr dazu?

fragende grüße,

johannes

  1. Hi,

    jetzt frage ich mich was document.pressed für ein befehl ist.

    gar keiner. Es ist eine Eigenschaft, die in dem von Dir zitierten Code erzeugt wurde. Also beinahe das gleiche wie window.blubberdiblub.

    ist es einfach eine variablendefinition

    Nein. Erstens sind Variablen schon definiert - das kannst Du z.B. im Informatik-Duden nachschlagen - und zweitens finden Variablen_deklarationen_ mittels 'var' statt (wenn auch manchmal implizit). Es ist eine Objekt-Eigenschaft wie z.B. auch window.name. Nur halt keine bekannte.

    Cheatah

    --
    X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. ok. vielen dank für die hilfreiche antwort. das ist mir völlig neu. ich kann also beliebige eigenschaften für objekte wie window oder document definieren und denen beliebige werte zuweisen? wozu brauch ich dann noch variablendefinitionen, wenn ich einfach schreiben kann document.myvar='xy'?

      1. Hi,

        ich kann also beliebige eigenschaften für objekte wie window oder document definieren und denen beliebige werte zuweisen?

        quasi.

        wozu brauch ich dann noch variablendefinitionen,

        Es gibt exakt eine Variablendefinition, nämlich die, die besagt, was eine Variable ist. Was Du meinst, nennt sich Deklaration. Das ist so, als wolltest Du mit einem Heißluftballon fliegen - das geht nicht, die Dinger fahren nämlich.

        wenn ich einfach schreiben kann document.myvar='xy'?

        Kannst Du. Dann hast Du bloß keine Variable, also auch nichts, was sich wie eine Variable verhält, sondern eine Eigenschaft, noch dazu in dem voraussichtlich falschen Objekt. Aber Gegenfrage: Warum willst Du irgend welche Objekteigenschaften erstellen, anstatt einfach eine Variable zu deklarieren?

        Cheatah

        --
        X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
        X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
        X-Will-Answer-Email: No
        X-Please-Search-Archive-First: Absolutely Yes
        1. ok. danke für die antworten. ich bin nur etwas verdutzt, da ich zwar schon ein bißchen über javascript gelesen habe und das ein oder andere in javascript geschrieben habe, aber daß ich eigenschaften von objekten neu erstellen kann, ist mir völlig neu, das habe ich noch nirgendwo gefunden. ich schätze es hat irgendwas mit dem konzept von objektorientiertem programmieren zu tun? ich kenne mich damit nicht aus. ich bin noch computerneuling. wäre es denn dann in diesem beispiel nicht angebrachter eine "globale", also ich meine eine über die funktion hinaus gültige variable zu definieren?

          1. Hallo johannes,

            wäre es denn dann in diesem beispiel nicht angebrachter eine "globale", also ich meine eine über die funktion hinaus gültige variable zu definieren?

            globale Variablen sind hässlich, wozu gibt es schließlich Rückgabewerte
            (das, was nach return in einer Funktion steht wird zurückgegeben).

            Gruß
            Alexander Brock

            --
            SelfCode: ie:{ fl:( br:> va:) ls:[ fo:) rl:( n4:? ss:| de:> js:( ch:| sh:( mo:} zu:}
            http://againsttcpa.com
          2. Hi,

            daß ich eigenschaften von objekten neu erstellen kann, ist mir völlig neu, das habe ich noch nirgendwo gefunden. ich schätze es hat irgendwas mit dem konzept von objektorientiertem programmieren zu tun?

            ja, das liegt (mit) am Prototyping-Ansatz der Objektorientierung in JavaScript. Es gibt keine Klassen, sondern nur Objekte; damit das funktioniert, müssen diese hinreichend veränderbar sein. Gut, auch in klassenbasierten OO-Sprachen ist ähnliches möglich.

            ich kenne mich damit nicht aus. ich bin noch computerneuling.

            Dafür sind Deine Gedankengänge aber schon beachtlich zielgerichtet.

            wäre es denn dann in diesem beispiel nicht angebrachter eine "globale", also ich meine eine über die funktion hinaus gültige variable zu definieren?

            Nein, es ist niemals möglich, eine Variable zu definieren - was ich jetzt schon zum dritten Mal sage. Sie zu _deklarieren_ wäre auch das, was ich bevorzugt hätte. Der Begriff "global" ist hier übrigens absolut korrekt; eine erweiterte Bezeichnung wäre "im globalen Scope".

            Cheatah

            --
            X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
            X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
            X-Will-Answer-Email: No
            X-Please-Search-Archive-First: Absolutely Yes
        2. Hallo,

          wenn ich einfach schreiben kann document.myvar='xy'?

          Kannst Du. Dann hast Du bloß keine Variable, also auch nichts, was sich wie eine Variable verhält, sondern eine Eigenschaft, noch dazu in dem voraussichtlich falschen Objekt.

          Variablen im globalen Kontext sind ebenfalls immer und notwendigerweise Eigenschaften. Diese Unterscheidung ist müßig bzw. nur interessant, wenn man zwischen globalem Scope Funktionen- bzw. Methodenscope unterscheidet. Davon abgesehen ist aber var document.myvar = "xy" genauso eine Eigenschaft wie var [window.]myvar = "xy".

          Mathias

      2. Hallo johannes,

        wozu brauch ich dann noch variablendefinitionen, wenn ich einfach schreiben kann document.myvar='xy'?

        Weil var myvar='xy' viel kürzer und ev. sinnvoller ist?
        Du solltest Objekten nur dann neue Eigenschaften zuweisen,
        wenn sich diese Eigenschaften wirklich auf das Objekt beziehen.

        Gruß
        Alexander Brock

        --
        [latex]\lim_{3 \to 4}{\sqrt{3}} = 2[/latex]
        1. Hallo,

          wozu brauch ich dann noch variablendefinitionen, wenn ich einfach schreiben kann document.myvar='xy'?

          Du solltest Objekten nur dann neue Eigenschaften zuweisen,
          wenn sich diese Eigenschaften wirklich auf das Objekt beziehen.

          Man kann darüber streiten, ob sich diese Eigenschaft nicht tatsächlich auf das Dokument als document-Objekt bezieht und weniger auf das Fenster als window-Objekt.

          Mathias

          1. Noch sinnvoller wäre in diesem Fall this.form.pressed oder ähnliches, dann speichert man die Daten tatsächlich an dem Objekt, auf die sich die Daten beziehen. (Mal davon abgesehen, dass man das auch ohne JavaScript hinbekommt.)

            Mathias