tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
1
ZUGRIFFE
526
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von Steusi
    Steusi Steusi ist offline Nasenbär
    Registriert seit
    Sep 2006
    Ort
    MV
    Beiträge
    431
    Hallo Leute,

    ich glaube es ist mein erster Beitrag in diesem Bereich. Für ein neues Projekt komme ich ohne Ajax nicht aus, deshalb habe ich es mir heute einmal angesehen und bin gleich auf ein Problem gestoßen, welches sicher einfach zu lösen ist.

    Ich möchte ein Element in einer Schleife ansprechen, nur wie? 2 identische id-namen dürfen nicht existieren und über den Namen komme ich auch auf keinen grünen Zweig.

    Ich habe ein Formular, welches 2 Eingabefelder in beliebiger Wiederholung haben kann, durch JS gelöst.
    im 1. Eingabefeld wird eine Nummer eingegeben und im 2. Feld soll automatisch der Name erscheinen.

    Im Folgenden einmal meine Code gekürzt auf das Wichtigste.

    Hier einmal mein Ajax/ JS Code:
    PHP-Code:
    <script type="text/javascript">
    <!--
    function 
    clone_this(objButton)
    {
    if(
    objButton.parentNode)
        {
        
    tmpNode=objButton.parentNode.cloneNode(true);
        
    objButton.form.appendChild(tmpNode);
        for(
    j=0;j<objButton.form.lastChild.childNodes.length;++j)
            {
            if(
    objButton.form.lastChild.childNodes[j].type=='text')
                {
                
    objButton.form.lastChild.childNodes[j].value='';
                break;
                }
            }
        
    objButton.value="entfernen";
        
    objButton.onclick=new Function('f1','this.form.removeChild(this.parentNode)');
        }
    }

    function 
    createXMLHttpRequest() {

    var 
    ua;

    if(
    window.XMLHttpRequest) {
        try {
          
    ua = new XMLHttpRequest();
        } catch(
    e) {
          
    ua false;
        }
      } else if(
    window.ActiveXObject) {
        try {
          
    ua = new ActiveXObject("Microsoft.XMLHTTP");
        } catch(
    e) {
          
    ua false;
        }
      }
      return 
    ua;
    }

    var 
    req createXMLHttpRequest();

    function 
    sendRequest(Feld) {
      
    req.open('get''site/func.php?s='Feld);
      
    req.onreadystatechange handleResponse;
      
    req.send(null);
    }

    function 
    handleResponse() {

      if(
    req.readyState == 4){
        
    document.getElementById('inhalt').value req.responseText;
      }
      else
      
    alert("loading" ajax.readyState);
    }
    //-->
    </script> 
    In der func.php steht nur folgendes:
    PHP-Code:
    $result mysql_query("SELECT name FROM `order` WHERE `nummer` = '".$_GET['s']."'; ");
    $row mysql_fetch_object($result);
    echo(
    $row->name); 
    Mein Formular sieht folgendermaßen aus:
    HTML-Code:
        <div>
           <input type="text" name="Artnr[]" onblur="sendRequest(this.value)" size="20">
           <input type="text" name="Artname[]" id="inhalt" size="20">
           <input type="button" value="noch eins" onclick="clone_this(this)">
        </div>
    Ich hoffe jemand hat eine Rat für mich

    //edit: Ich habe mir gedacht, ich kann beim clonen ja einfach die ID von dem betreffenden Input-Feld ändern, mittels:
    PHP-Code:
    document.getElementById('inhalt').id='old'
    Jedoch macht er es dann auch gleich für das Folgende.

    //edit: Das Verstehe ich nicht, mit einem Mal klappt der Befehl mit dem ID-Wechsel doch
    Geändert von Steusi (15.07.10 um 13:51 Uhr)
     
    Gruß Steusi

    Sollte dir ein Tipp von mir geholfen haben, freue ich mich auch über eine kleine Bewertung.
    Und wenn ein Problem gelöst ist, markiere deinen Beitrag bitte als erledigt.
    PHP-Code:
    $fehler "dummer Tippfehler";
    echo(
    "Und ist das Programm noch so klein, es passt immer noch ein ".$fehler". rein!"); 

  2. #2
    Quaese Quaese ist offline Moderator
    tutorials.de Moderator
    Registriert seit
    Feb 2004
    Beiträge
    3.451
    Hi,

    wenn sich die Positions des Ausgabe-Textfeldes nicht ändert und dieses immer an der zweiten Stelle steht, könntest du dich über den Dokumentenbaum und die Methode getElementsByTagName dorthin hangeln.

    Beispiel:

    HTML
    Code :
    1
    2
    3
    4
    5
    
        <div>
           <input type="text" name="Artnr[]" onblur="sendRequest([B]this[/B])" size="20">
           <input type="text" name="Artname[]" id="inhalt" size="20">
           <input type="button" value="noch eins" onclick="clone_this(this)">
        </div>

    JS:

    Die entscheidenden Stellen habe ich im Quellcode kommentiert.
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    
    function sendRequest(Feld) {
      // Wert des Feldes übergeben
      req.open('get', 'site/func.php?s='+ [B]Feld.value[/B]);
      // Der callback-Funktion wird das Ausgabefeld als Argument übergeben
      req.onreadystatechange = [B]function(){
        // Beim Ausgabefeld handelt es sich um das 2-te input-Element des Elternknotens
        handleResponse(Feld.parentNode.getElementsByTagName('input')[1]);
      };[/B]
      req.send(null);
    }
     
    // Die callback-Funktion erhält das Ausgabefeld als Argument
    function handleResponse([B]objField[/B]) {
     
      if(req.readyState == 4){
        // Dem Ausgabefeld die Antwort zuweisen
        objField.value = req.responseText;
      }
      else
        alert("loading" + req.readyState);
    }

    Ciao
    Quaese
     
    Vielleicht muss man manchmal vom Weg abkommen, um nicht auf der Strecke zu bleiben!
    ----
    Der "Fortsetzungsroman" auf www.leuteforum.de

    New kind to realize large scalable projects with jQuery: jQuery SDK

Ähnliche Themen

  1. elemente ansprechen
    Von tombo82 im Forum Javascript & Ajax
    Antworten: 20
    Letzter Beitrag: 26.02.09, 11:55
  2. Elemente ansprechen
    Von tombo82 im Forum .NET Windows Forms
    Antworten: 1
    Letzter Beitrag: 18.09.08, 10:16
  3. externe Elemente ansprechen
    Von Tiefschneetaucher im Forum Javascript & Ajax
    Antworten: 2
    Letzter Beitrag: 26.07.07, 13:19
  4. alle elemente in array ansprechen
    Von Guden im Forum Javascript & Ajax
    Antworten: 1
    Letzter Beitrag: 15.12.06, 15:53
  5. Elemente ansprechen unter Opera
    Von foerbyratte im Forum Javascript & Ajax
    Antworten: 3
    Letzter Beitrag: 13.08.04, 09:38