Creator: Auslesen und verarbeiten von id Werten von einem Responce

Abend,

ich komme leider nicht weiter und hoffe daher auf eure Hilfe.

Ich arbeite mit dem JS Framework Prototype

Das Ergebnis des Responce möchte ich gerne weiterverarbeiten, leider weiß ich nicht wie ich an diese Inforamtionen rankommen die ich brauche. :(

Folgendes wird per Ajax nachgeladen: ( Stark verkürzt )

  
<div class='movie_img' id=6473><img src... /></div>  
<div class='movie_img' id=8372><img src... /></div>  

Die Informationen direckt in den Content zu schreiben ist kein Problem:
Beispiel:

  
function showResult(ResponseObjekt){  
	var content = ResponseObjekt.responseText;  
	$('content').innerHTML = content;  
	  
}  

Bis dahin funktioniert alles.

Jetzt benötige ich allerdings ein array mit allen ID Werten aus class movie_img.

In einer Schleife möchte ich dann folgendes ausführen.

  
new Draggable(movie_id,{revert: true});  

Also würde ich, für jede vorhandene ID einmal die Draggable aufrufen, und die ID übergeben.

Kann mir jemand sagen wie ich das erreichen kann?

  1. Hallo,

    Kann mir jemand sagen wie ich das erreichen kann?

    per regexp

    mfg, Flo

    --
    sh:) fo:| ch:? rl:( br:^ n4:| ie:{ mo:| va:} de:> zu:} fl:{ ss:) ls:< js:|
    1. Hallo,

      »» Kann mir jemand sagen wie ich das erreichen kann?
      per regexp

      Gibt es keine andere möglichkeit?
      Als Beispiel vieleicht mit getelementBYclassname() oder so?

      Hatte schon überlegt das mit JSON zu übertragen. Einmal den fertigen HTML/Text oder ein array mit allen IDS. Aber das bekomme ich auch nicht hin.

      1. Hallo,
        »»
        »» »» Kann mir jemand sagen wie ich das erreichen kann?
        »» per regexp
        »»

        Gibt es keine andere möglichkeit?
        Als Beispiel vieleicht mit getelementBYclassname() oder so?

        Hatte schon überlegt das mit JSON zu übertragen. Einmal den fertigen HTML/Text oder ein array mit allen IDS. Aber das bekomme ich auch nicht hin.

        was spricht gegen regex?

        1. Hi,

          was spricht gegen regex?

          Wahrscheinlich nur das ich mich innerlich gegen reguläre ausdrücke wäre. :(

          Mal folgender Versuch von mir:

            
          function showResult(ResponseObjekt){  
          	var content = ResponseObjekt.responseText;  
          	var reg = "/^div class='movie_img id=(\d+)' /";  
          	var result;  
          	while (result = reg.exec(content)){  
          		new Draggable(result[1],{revert: true});  
          	}  
          	$('content').innerHTML = content;  
          }  
          
          

          Leider erhalte ich weder eine Ausgabe noch einen Fehler:(

          Ich vermutemal, das mein reg total falsch ist, aber wie mach ich es richtig?

          1. hallo,

              
            
            > var reg = "/^div class='movie_img id=(\d+)' /";  
            
            

            das ist nur ein schnöder string

            [...]

              
            
            > 	var result;  
            > 	while (result = reg.exec(content)){  
            
            

            hier bekomme ich fehlermeldungen, weil strings normalerweise keine exec methode haben und selbst wenn reg ein regex wäre, der matcht, dann wäre das auch eine endlosschleife ("g" flag fehlt)

            [...]

            Leider erhalte ich weder eine Ausgabe noch einen Fehler:(

            schau mal in die fehler konsole deines browsers, wenn er eine hat

            1. Ich bekomme keine Fehler, weil der Code nach einem Ajax Request ausgeführt wird. Firebug sacht mir nichts.

              Wie kann ich es denn richtig machen?

              1. Ok manchmal bin ich auch ein wenig panne :)

                Also das geht natürlich:

                  
                function showResult(ResponseObjekt){  
                	var content = ResponseObjekt.responseText;  
                	var reg = /div class='movie_img' id='(\d+)'/g;  
                	var result;  
                	while (result = reg.exec(content)){  
                		alert(result[1]);  
                	}  
                	$('content').innerHTML = content;  
                }
                

                Ich bekomme schön die ID ausgegeben.

                Wenn ich das aber jetzt so mache,

                  
                function showResult(ResponseObjekt){  
                	var content = ResponseObjekt.responseText;  
                	var reg = /div class='movie_img' id='(\d+)'/g;  
                	var result;  
                	while (result = reg.exec(content)){  
                		new Draggable(result[1],{revert: true});  
                	}  
                	$('content').innerHTML = content;  
                }
                

                Bricht das Skript genau da ab :(

                Es weder ein Alert noch eine Fehlermeldung, noch wird das objekt erstellt.

                1. Es weder ein Alert noch eine Fehlermeldung, noch wird das objekt erstellt.

                  Du weiß auch, wo du die Fehlermeldungen findest?

                  Struppi.

                2. Bricht das Skript genau da ab :(

                  Es weder ein Alert noch eine Fehlermeldung, noch wird das objekt erstellt.

                  Ohne Fehlermeldung bricht kein Script einfach so ab.

                  Mathias

          2. var reg = "/^div class='movie_img id=(\d+)' /";

            var reg = /div class='movie_img' id=(\d+)/g;

            var result;
            while (result = reg.exec(content)){

            alert(result + "\n" + result[1]);

            Mathias

            1. »» var reg = "/^div class='movie_img id=(\d+)' /";

              var reg = /div class='movie_img' id=(\d+)/g;

              »» var result;
              »» while (result = reg.exec(content)){

              alert(result + "\n" + result[1]);

              Ah das bringt mich schon ein bischen weiter:

                
              function showResult(ResponseObjekt){  
              	var content = ResponseObjekt.responseText;  
              	var reg = /div class='movie_img' id='(\d+)'/g;  
              	var result;  
              	while (result = reg.exec(content)){  
              		alert(result + "\n" + result[0]);  
              	}  
              	$('content').innerHTML = content;  
              }  
              
              

              Jetzt bekomme ich folgende Ausgabe innerhalb eines Alert:
              div class='movie_img' id='227',227
              div class='movie_img' id='227'

              Für jeden Datensatz ein Alert also bei 10 Filmen 10 Alerts :)

              Jetzt brauche ich ja nur die ID das ging doch mit $1 oder?

              dachte daher als beispiel so:
              var reg = /div class='movie_img' id='(\d+$1)'/g;
              Das hat leider nicht funktioniert. :(

              Wie kann ich das hinbekommen?

              1. alert(result + "\n" + result[1]);

                  alert(result + "\n" + result[0]);  
                

                }
                $('content').innerHTML = content;
                }
                [/code]
                Jetzt bekomme ich folgende Ausgabe innerhalb eines Alert:
                div class='movie_img' id='227',227
                div class='movie_img' id='227'

                Für jeden Datensatz ein Alert also bei 10 Filmen 10 Alerts :)

                Jetzt brauche ich ja nur die ID das ging doch mit $1 oder?

                Ach, bitte lies doch mal die <http://de.selfhtml.org/javascript/objekte/regexp.htm#exec@title=Dokumentation zu exec> und schau dir an, was result ist.
                Und bitte versuche das Beispiel, was ich dir gegeben habe, zu verstehen.
                BITTE zeige etwas Eigeninitiative, wir wollen dir hier nicht alles vorkauen.

                result ist ein Array, der beim Ausgeben mit alert natürlich in einen String umgewandelt wird - ein Array mit zwei Elementen. Im ersten Element der Treffer des Gesamtausdrucks, im zweiten Element der Treffer des Teilausdrucks. Deshalb result[1] zum Zugriff darauf!

                dachte daher als beispiel so:
                var reg = /div class='movie_img' id='(\d+$1)'/g;

                Zwei Stunden herumprobieren können dir fünf Minuten SELFHTML lesen ersparen.

                Mathias

      2. Hatte schon überlegt das mit JSON zu übertragen. Einmal den fertigen HTML/Text oder ein array mit allen IDS.

        JSON ist eine gute Idee, aber warum den HTML-Text auch darin unterbringen? Übertrage die nötigen Daten doch strukturiert und baue clientseitig das HTML mit einem Template zusammen.

        Aber das bekomme ich auch nicht hin.

        Woran scheitert es denn?
        http://www.prototypejs.org/learn/json

        Mathias

  2. hi,

    Jetzt benötige ich allerdings ein array mit allen ID Werten aus class movie_img.

    gehe durch die Response

    var id = object.getAttribute('id');
    sofern object.getAttribute('class') => "movie_img";

    Beispiel

    Hotte

    --
    Wenn der Kommentar nicht zum Code passt, kann auch der Code falsch sein.