dm: location.href - was stimmt hier nicht?!

Hi,
Bitte werft mal einen kurzen Blick drauf, hat schon funktioniert, hatte wohl irgendwas geaendert, jetzt laeufts nicht mehr. Ich haette gerne, dass der User in ein Feld eine Zeichenfolge (beispielsweise "hallo") eingibt, auf Senden clickst, das Script fuegt ".htm" an und springt auf hallo.htm.

<form>Ihre Eingabe  <input name="p" maxlength=10 size=10>  <input type=submit value="Senden" onClick="location.href(this.form.p.value + '.htm')"></form>

Thx, dm

  1. hi ebenfalls,

    da geht bissel was durcheinander:

    <form>

    Das Formular selbst benötigt einen Namen und vielleicht noch die eine oder andre Zutat.

    Ihre Eingabe

    ??? Wo soll dieser Text erscheinen ? und steht der in einem <p>-tag oder ist dafür irgendeine Formatierung zur Anzeige vorgesehen ?

    <input name="p" maxlength=10 size=10>
    Da sollte doch wenigstens der input-Typ angegeben werden.

    input type=submit value="Senden" onClick="location.href(this.form.p.value + '.htm')"></form>
    hm ... mit "this.form.p.value" wird dem Formular mit dem Namen "p", das gar nicht existiert, ein Wert übergeben, der gar nicht existiert ...

    ein Beispiel, wie "so etwas" funktionieren kann:

    <form name="Eingabefeld">
      <textarea name="Eingabe" value="T" rows=10 cols=55></textarea><p>
      <input type="button" name="Knopf1" value="Eingaben überprüfen" onClick="anzeigen(this.form.Eingabe.value)">
      <input type="button" name="Knopf2" value="als mail versenden" onClick="mail(this.form.Eingabe.value)">
    </form>

    für dieses Beispiel müssen selbstverständlich irgendwo die Javascript-Funktionen "anzeigen" und "mail" definiert sein.

    Christoph S.

    1. Ihre Eingabe  
      ??? Wo soll dieser Text erscheinen ? und steht der in einem <p>-tag oder ist dafür irgendeine Formatierung zur Anzeige vorgesehen ?

      Ich kann die Relevanz der Textformatierung in dem Zusammenhang nicht nachvollziehen.

      input type=submit value="Senden" onClick="location.href(this.form.p.value + '.htm')"></form>
      hm ... mit "this.form.p.value" wird dem Formular mit dem Namen "p", das gar nicht existiert, ein Wert übergeben, der gar nicht existiert ...

      "p" ist kein Formular (dieses wird mit "this.form" definiert), sondern der Wert, der im Eingabefeld uebergeben wird.

      1. siehe meine Korrektur weiter oben. Ich hab aus Versehen auf "senden" gedrückt, als ich noch nicht ganz fertig mit Schreiben war

        Christoph S.

  2. Hi,
    Bitte werft mal einen kurzen Blick drauf, hat schon funktioniert, hatte wohl irgendwas geaendert, jetzt laeufts nicht mehr. Ich haette gerne, dass der User in ein Feld eine Zeichenfolge (beispielsweise "hallo") eingibt, auf Senden clickst, das Script fuegt ".htm" an und springt auf hallo.htm.

    <form>Ihre Eingabe  <input name="p" maxlength=10 size=10>  <input type=submit value="Senden" onClick="location.href(this.form.p.value + '.htm')"></form>

    Thx, dm

    Hallo Dezimeter,
    mach das mal so:
    <form>Ihre Eingabe  
    <input name="p" maxlength=10 size=10>  
    <input type=button value="Öffnen" onClick="location.href=document.forms[0].p.value+'.htm'">
    </form>
    Gruß, Lutz

    1. Hi Lutz,
      Schoenen Dank, mein Fehler war das type=submit, mit type=button funktionierts!

      Du schreibts allerdings: onClick="location.href=document.forms[0].p.value+'.htm'"

      Bei mir steht: onClick="location.href(this.form.p.value + '.htm')"

      Was spricht gegen meine Version - weil funktionieren tun beide.
      Thx, Cheers, dm.

      1. Hi Lutz,
        Schoenen Dank, mein Fehler war das type=submit, mit type=button funktionierts!

        Du schreibts allerdings: onClick="location.href=document.forms[0].p.value+'.htm'"

        Bei mir steht: onClick="location.href(this.form.p.value + '.htm')"

        Was spricht gegen meine Version - weil funktionieren tun beide.
        Thx, Cheers, dm.

        Hallo nochmal,
        ich denke

        onClick="location.href=this.form.p.value+'.htm'"

        wäre genauso korrekt, aber

        onClick="location.href(this.form.p.value + '.htm')"

        scheint mir fehlerhaft zu sein, weil href eine Eigenschaft und keine Methode ist. Es kann sein, dass IE keine Fehlermeldung ausgibt, weil der ziemlich fehlertolerant ist und das automatisch ausbügelt.
        Funktionieren müßte dagegen wieder

        onClick="location.replace(this.form.p.value + '.htm')"

        weil replace eine Methode ist. Der Unterschied zu der Version mit href ist, daß dabei der History-Eintrag überschrieben wird, d.h. man kommt dann nicht mehr mit dem Zurück-Button zur vorherigen Seite.

        Gruß, Lutz

        1. hallo Lutz,

          ich denke
          onClick="location.href=this.form.p.value+'.htm'"
          wäre genauso korrekt, aber
          onClick="location.href(this.form.p.value + '.htm')"
          scheint mir fehlerhaft zu sein, weil href eine Eigenschaft und keine Methode ist.

          Das ist ein sehr guter Hinweis. Wenn man mal überlegt, wo die meisten Fragen zu Javascript hier im Forum "Hänger" haben, ist es genau dieses Problem, daß es schwer fällt, zwischen "Eigenschaften" und "Methoden" zu unterscheiden.

          Für das, was dm aber gerne haben möchte, muß man überlegen, ob "location.href" überhaupt die sauberste und zweckmäßigste Lösung ist. Ich halte es für richtiger, statt "location.href" hier eine eigene Funktion zu definieren.

          Grüße aus Berlin

          Christoph S.

          1. Guten Morgen,

            Es funktioniert nach der Lutz'schen Methode, ganz ohne PHP oder CGI oder einer eigenen Funktion.
            Wozu also herumbasteln... womoeglich dass es fuer aussterbende Minderheitenbrowser abseits von MSIE auch funktioniert?
            Erfolg bemisst sich auch in der Relation von Ergebnis und Aufwand!
            Cheers, dm.

            Für das, was dm aber gerne haben möchte, muß man überlegen, ob "location.href" überhaupt die sauberste und zweckmäßigste Lösung ist. Ich halte es für richtiger, statt "location.href" hier eine eigene Funktion zu definieren.

            Grüße aus Berlin

            Christoph S.

            1. hallo dm,

              Es funktioniert nach der Lutz'schen Methode

              natürlich funktioniert das. Aber das Forum hier ist dem SELFHTML-Motto von der "Energie des Verstehens" verpflichtet, also muß man wohl auch Theorien durchprobieren und diskutieren dürfen, wie irgendetwas vielleicht "besser" funktionieren könnte

              ganz ohne PHP

              von PHP oder CGI habe ich nicht gesprochen

              Wozu also herumbasteln... womoeglich dass es fuer aussterbende Minderheitenbrowser abseits von MSIE auch funktioniert?

              Nein. Sondern um eine noch bessere Lösung zu finden. Und sei mit Äußerungen üner "aussterbende Browser" bitte vorsichtig. Es gibt neben dem IE noch eine ganze Reihe sehr wichtiger und keineswegs aussterbender Browser  -  Netscape mag vielleicht eines Tages tatsächlich aussterben, aber das ist nur einer von sehr vielen "nicht-IE"-Browsern.
              Hast du schon mal davon gehört, daß es auch untewrshciedliche Betriebspalttformen gibt, für die die IE noch gar nichgt portiert worden ist ?

              Erfolg bemisst sich auch in der Relation von Ergebnis und Aufwand!

              Richtig. Es scheint aber, als sei für dich der "Aufwand" weit stärker beschränkt als nützlich ist.

              Grüße aus Berlin

              Christoph S.

  3. hi ebenfalls,

    da geht bissel was durcheinander:

    <form>

    Das Formular selbst benötigt einen Namen und vielleicht noch die eine oder andre Zutat.

    Ihre Eingabe

    ??? Wo soll dieser Text erscheinen ? und steht der in einem <p>-tag oder ist dafür irgendeine Formatierung zur Anzeige vorgesehen ?

    <input name="p" maxlength=10 size=10>

    Da sollte doch wenigstens der input-Typ angegeben werden.

    <input type=submit value="Senden" onClick="location.href(this.form.p.value + '.htm')"></form>

    hm ... mit "this.form.p.value" wird einem nicht definierten Bestandteil des Formulars, das den Namen "p" trägt, ein Wert übergeben, der gar nicht existiert ... der input-Typ "submit" ist hier auch verkehrt, da der EventHandler "onClick" getrost auch bei dem ersten input hätte Anwendung finden können

    ein Beispiel, wie "so etwas" funktionieren kann:

    <form name="Eingabefeld">
      <textarea name="Eingabe" value="T" rows=10 cols=55></textarea><p>
      <input type="button" name="Knopf1" value="Eingaben überprüfen" onClick="anzeigen(this.form.Eingabe.value)">
      <input type="button" name="Knopf2" value="als mail versenden" onClick="mail(this.form.Eingabe.value)">
    </form>

    für dieses Beispiel müssen selbstverständlich irgendwo die Javascript-Funktionen "anzeigen" und "mail" definiert sein (das sind hier Beispielfunktionen für eine etwas andere Aufgabenstellung). Für deine Zwecke wäre mit deiner eigenen Javascript-Funktion halt noch zu definieren, wie jetzt diese Eingabe in ein bestehendes HTML-Dokument eingefügt werden soll. Und das _geht nicht_ mit Javascript, wenn das HTML-Dokument Bestand haben soll. Dazu müßte der eingetippte Inhalt an eine Scriptsprache übergeben werden, die das kann  -  z.B. PHP oder Perl.

    Christoph S.

    1. Hallo Christoph!

      Leider muss ich Dir sagen, das man Dein Posting so wie es ist direkt in die Tonne klopfen kann - und dass das kein Einzelfall ist. In letzter Zeit postest Du ziemlich oft unausgegorene Sachen. Also achte doch bitte ein bisschen darauf, dass Du Dich weniger zu Themen aeusserst, bei denen Du Dich nicht auskennst. Wenn Du nur eine Idee zu einem Thema hast, oder Dir bei einer Sache nicht sicher bist, dann schreib das einfach dazu, machen alle anderen auch so.

      So long