javascript-Anfänger: document.getElementById()

Hi! Hätte da mal ein Frage...ich möchte gerne in die Textboxen
a) Name1
b) Name2
Hallo bzw einen anderen Wert(hier Hello) eingeben und als Antwort OK bekommen...aber irgendwie funktioniert das nicht wirklich so wie ich es gerne hätte...bei der ersten Textbox (Name1) schlägt das Ergebnis zwar OK aus aber bei der zweiten Textbox (Name2) tut sich im Ergebnis gar nichts...Hoffe einer von euch weiß was zu dem Thema ;). Danke schon mal im Voraus für alle Antworten!

Hier die Formel...
Ps.: Hab schon versucht
var xd  = x1; x2; mit
var xd  = x1||x2 zu ersetzten das klappt aber auch nicht...

<div method="get" id="FunktionANTWORT1">
<input id="Name1" size="50">
<input id="Name2" size="50">
<input id="Antwort" size="130"/>
</div>

<script type="text/javascript">
var FunktionANTWORT1 = document.getElementById('FunktionANTWORT1');
FunktionANTWORT1.onkeyup = function () {
   var x1 = document.getElementById('Name1').value;
   var x2 = document.getElementById('Name2').value;
   var xd  = x1; x2;
   var zb = document.getElementById('Antwort');

if (xd=="Hallo"||xd=="Hello") {
      zb.value = xd;
   } else {
      zb.value = "Nicht gefunden";
   }
   return false;
}
</script>

  1. Korrigiere meine adresse Wwagner44@gmx.at

  2. Hallo,

    dein Nick muss im Thema Javascript nicht javascript sein :)

    var xd  = x1; x2;

    was soll diese Zeile bewirken?

    var xd  = x1||x2 zu ersetzten das klappt aber auch nicht...

    du solltest mal genau angeben, bei welcher Eingabekombination was ausgegeben werden soll. Bei mir macht es das, was es soll, aber offensichtlich willst du etwas anderes.

    <div method="get" id="FunktionANTWORT1">

    div kennt kein "method=...". (Oder ist das html5 neu?)

    <input id="Name1" size="50">
    <input id="Name2" size="50">
    <input id="Antwort" size="130"/>

    Ich werde nie verstehe, warum man für eine Ausgabe ein Eingebeelement nimmt.

    </div>

    Gruß, Jürgen

    1. Hallo,

      dein Nick muss im Thema Javascript nicht javascript sein :)

      var xd  = x1; x2;

      was soll diese Zeile bewirken?

      var xd  = x1||x2 zu ersetzten das klappt aber auch nicht...

      du solltest mal genau angeben, bei welcher Eingabekombination was ausgegeben werden soll. Bei mir macht es das, was es soll, aber offensichtlich willst du etwas anderes.

      <div method="get" id="FunktionANTWORT1">

      div kennt kein "method=...". (Oder ist das html5 neu?)

      <input id="Name1" size="50">
      <input id="Name2" size="50">
      <input id="Antwort" size="130"/>

      Ich werde nie verstehe, warum man für eine Ausgabe ein Eingebeelement nimmt.

      </div>

      Gruß, Jürgen

      Hi Jürgen!

      Die

      var xd  = x1; x2;

      sollte bewirken dass die zwei Textboxen den Wert von Name1 und Name2 nehmen und überprüfen ob Hello oder Hallo in einen der Boxen existiert!!!...und dann mit Ok antwortet. Das funktioniert aber bei mir nicht!!!...Name1 erkennt Hello/Hallo...Name2(Textbox Nummer zwei!!) erkennt Hello/Hallo aber nicht...zu mindest bei mir...die Eingabe hätte ich gerne in Boxen drin...ich möchte das Formular mit formaction an mich schicken...deshalb die Boxen...

      Lg dein Javascript-Anfänger ;)...der Name war etwas einfallslos...hoffe du verzeihst mir ;)

      1. Wo ist da der Unterschied??? bei method="get" und meiner Schreibweise???

        <div method="get" id="FunktionANTWORT1">

        div kennt kein "method=...". (Oder ist das html5 neu?)

        hab DwCs3 fürs programmieren...ich glaub die Version ist zu alt und hat kein html5...bin mir ziemlich sicher...Lg u. danke f. d. Antwort

      2. Hallo javascript,

        var xd  = x1; x2;

        was soll diese Zeile bewirken?

        diese Frage war rein rhetorisch. Die Zeile bewirkt das xd den Wert von x1 bekommt, und dann die Variable x2 "angefasst" wird. Das ";" ist das Trennzeichen zwischen Statements. Bei der Größe des Projekts solltest du dir unbedingt mindestens Grundkenntnisse in JS aneignen.

        var xd  = x1||x2 zu ersetzten das klappt aber auch nicht...

        du solltest mal genau angeben, bei welcher Eingabekombination was ausgegeben werden soll. Bei mir macht es das, was es soll, aber offensichtlich willst du etwas anderes.

        sollte bewirken dass die zwei Textboxen den Wert von Name1 und Name2 nehmen und überprüfen ob Hello oder Hallo in einen der Boxen existiert!!!...und dann mit Ok antwortet. Das funktioniert aber bei mir nicht!!!...Name1 erkennt Hello/Hallo...Name2(Textbox Nummer zwei!!) erkennt Hello/Hallo aber nicht...zu mindest bei mir...die Eingabe hätte ich gerne in Boxen drin...ich möchte das Formular mit formaction an mich schicken...deshalb die Boxen...

        also sollte in einem der Felder "Hallo" oder "Hello" stehen?

        Die Zeile var xd  = x1||x2; bewirkt, dass erst geprüft wird, ob x1 existiert bzw. nicht leer ist. Wenn ja xd = x1, sonst xd = x2. Wenn in x1 "Murks" steht und in x2 "Hallo", enthält xd "Murks".

        Ich glaube, die Lösung von gast_42 ist da die bessere. Wenn du viele solche abfragen hast, solltest du die Lösungen in einem Array ablegen und dann mit einer äußeren Schleife die Felder durchlaufen, und mit einer inneren die Vergleiche. Auf die Eingabefelder würde ich mit document.getElementByTagname zugreifen. Das liefert etwas, auf das man wie auf ein Array zugreifen kann:

        inps = document.getElementByTagname("input");

        for (var i=0;i<inps.length;i++) {
          var x = inps[i].value;
          for var j=0;j<loesungen.length;j++) {
            if ( x == loesungen[j] ) ...
          }
        }

        Der Code ist ungetestet, übernimm ihn nicht einfach so, ohne in der Doku nach zu lesen. Wahrscheinlich brauchst du auch noch geeignete gruppierende Elemente um die inputs. Der Zugriff geht dann z.B. über inps = document.getElementById(...).getElementByTagname("input");

        Also Hausaufgabe:

        • Schleifen
        • Arrays
        • DOM-Zugriff über getElement(s)By...
        • Konzept, wie das Problem anzugehen ist.

        Gruß, Jürgen

        1. Hi Jürgen!

          Vielen Danke für deine Antwort!!
          Ich werde mir deinen Vorschlag zu Herzen nehmen und meine Hausaufgaben mal genauer ansehen...Danke nochmals für die Mühe die ich dir bereitet habe und insb. für deine Antworten!

          Lg Wolfgang(javasrcipt-Anfänger)

  3. wozu xd? Frag die Variablen einfach der Reihe nach ab!

        if (x1=="Hallo"||x1=="Hello"||x2=="Hallo"||x2=="Hello") {  
    
    
    1. wozu xd? Frag die Variablen einfach der Reihe nach ab!

      if (x1=="Hallo"||x1=="Hello"||x2=="Hallo"||x2=="Hello") {

      
      >   
      
      Erstmals danke für deine Antwort!!!....xd muss ich leider deswegen verwenden damit die Datei(html) nicht zu groß wird...hab nämlich leider mehrere Eingabe Boxen(45)...und noch viel mehr Antwortmöglichkeiten als Hello und Hallo(ca. 400.000)...das wär zu viel und würde die html möglicherweise überladen...400.000\*45...XD...glaub das kann leider nix...mit xd sollte ich mir das sparen...lg und danke nochmals ;)
      
      1. und danke nochmals ;)

        bitte erläutere zunächst einmal dein Gesamtkonzept: Was willst du eigentlich erreichen? Wenn 45 Eingabefelder auf 400000 mögliche Einträge geprüft werden sollen wäre die eine oder andere Schleife evtl. praktisch. 45 aufeinanderfolgenden input-Elementen jeweils eine ID zu geben erscheint mir nur wenig zielführend.

        1. und danke nochmals ;)

          bitte erläutere zunächst einmal dein Gesamtkonzept: Was willst du eigentlich erreichen? Wenn 45 Eingabefelder auf 400000 mögliche Einträge geprüft werden sollen wäre die eine oder andere Schleife evtl. praktisch. 45 aufeinanderfolgenden input-Elementen jeweils eine ID zu geben erscheint mir nur wenig zielführend.

          Danke Gast42 für deine Antwort!!

          Die 400.000 Einträge sind bereits in einer Datenbank die mit js erstellt wurde...die Formel entspricht im großen und ganzen der bereits genannten...die Datenbank funktioniert einwandfrei...alle Land, Bundesland, Straßen, Orte und PLZs im gesamten Bundesgebiet(ich komme aus Österreich) werden auf ihre Existenz überprüft (durch die Formel) und überdies der gegebene Zusammenhang
          zB.: Österreich,Kärnten,Klagenfurt,Knausweg, 9020, ergibt das der Zusammenhang von Land, Bundesland, Straßen, Orte und PLZ gegeben ist!
          Da jedoch nicht ich mein Formular ausfüllen muss sondern andere Personen sollte nun
          die Eingabe
          a) Kleingeschrieben (+ alle Sonderzeichen werden durch Leerschritt ersetzt und alle überflüssigen Leerzeichen werden ebenfalls ersetzt)werden und
          b)
          alle Wörter aufgeteilt werden(mit split) => Klagenfurt am Wörthersee
          ist also in textbox
          x = klagenfurt
          y = am
          z = wörthersee
          c) Da das nun Klein ist wird jeder Anfangsbuchstabe in einem anderen Feld wieder großgemacht...
          x = klagenfurt
          y = am
          z = wörthersee
          a = Klagenfurt
          b = Am
          c = Wörthersee
          e) Da es aber nicht nur Leerzeichen sondern auch Bindestriche gibt zB. Friedrich-Schiller-Gasse muss das gleich nun auch mit den Bindestrichen gemacht werden....
          d) Alle Wörter werden wieder zusammengesetzt (in allen denkbaren Lösungsvarianten!!!!!!!!!!!!!!!!)
          wie auch immer das ganz macht das was es machen sollte nämlich in einen der 45 Werte mein Ergebnis anzeigen!!! Also es würde immer die richtige Lösung angezeigt werden sofern sich das Wort aus den richtigen Buchstaben zusammensetzt...egal wie bewandt der Benutzer ist..
          zB.: aKlagenfurt würde nicht funktionieren wenn der Wert Klagenfurt wäre
          (dafür habe ich aber eine zweite fx...nochmals mit 400.000 zu überprüfenden Werten)

          Zusammengefasst alles würde in Ordnung sein wenn nicht dieses Problem aufgetreten wäre...

          Lg Wolfgang ;)

          1. ... nicht dass die Klarheit dadurch gesteigert worden wäre!

            Evtl. hilft es dir, wenn du einfach die Felder adierst:

            xd=x1+" "+x2;

            (da du ja - so meine Ahnung des Inhalts deiner Beschreibung - offenbar später sowieso alles wortweise per split() zerlegst kannst du ja vorher auch einfach alle Antworten mit Trennerleerzeichen zusammensetzen)