Ankündigung

Einklappen
Keine Ankündigung bisher.

Object Literal dynamisch mit Werten füllen

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Object Literal dynamisch mit Werten füllen

    Hallo Leute,

    mein Ziel steht schon im Thread Titel. Hier erst mal mein Code, dass ist nur der relevante Auszug einer Funktion.

    Code:
    var reqEmpf = document.getElementById( "logDataOutput" );
                    var postElementsObject = "";
                    var formElements = document.getElementById( "logForm" );
                    var postElements = formElements.getElementsByTagName( "input" );
                    
                    for ( var i = 0; i < postElements.length; i++ ) {
                        postElementsObject = {
                            if ( i < postElements.length ) {
                                postElements[i] : 'postElements[i]' + .value,
                            } else {
                                postElements[i] : 'postElements[i]' + .value
                            }
                        }
                    }
                    
                    alert( postElements );
    Ich lese wie man sehen kann aus einem Element alle input Elemente aus und will nun die Feldnamen und Werte in ein ObjektLiteral speichern um später darauf zugreifen zu können.

    Nun bekomme ich aber eine Fehlermeldung in der Konsole, habe auch schon gegooglet aber wirklich schlauer bin ich auch nicht geworden, weil sich die meisten Sachen da auf Formelemente bezogen diese dynamisch zu füllen.

    Hier die Fehlermeldung aus der Konsole.

    Fehler: missing : after property id
    Quelldatei: http://localhost/Parkatikum_Sedna_So...gin/login.html
    Zeile: 35, Spalte: 9
    Quelltext:
    if ( i < postElements.length ) {
    Die Fehlermeldung bezieht sich auf die If Abfrage.

    Könnt ihr mir da vieleicht weiter helfen was ich falsch mache und ändern muss im Code?

    Vielen Dank Gruß Litter
    Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
    [URL]http://www.lit-web.de[/URL]

  • #2
    1. heißt es nicht
    PHP-Code:
    postElements[i] : foo
    sondern ganz einfach
    PHP-Code:
    postElements[i] = foo
    2. was soll der Punkt da: 'postElements[i]' + .value
    3. was soll das überhaupt werden?: 'postElements[i]' + .value
    4. Benutze bitte immer Semikolons
    5. Du kannst ein Objekt (postElements[i]) nicht als Schlüssel verwenden
    6. if und else Operationen sind gleich
    7.
    PHP-Code:
                    postElementsObject = {};
                    for ( var 
    0postElements.lengthi++ ) {
                        if ( 
    postElements.length ) {
                            
    postElementsObject[i] = postElements[i].value;
                        } else {
                            
    postElementsObject[i] = postElements[i].value;
                        }
                    } 
    zu 6) Ach so, es ging ums Komma. Nunja, wie schon gesagt, so geht das nicht. Ergo:

    PHP-Code:
                    postElementsObject = {};
                    for ( var 
    0postElements.lengthi++ ) {
                        
    postElementsObject[i] = postElements[i].value;
                    } 
    [COLOR="#F5F5FF"]--[/COLOR]
    [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
    „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
    [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
    [COLOR="#F5F5FF"]
    --[/COLOR]

    Kommentar


    • #3
      Code:
      postElementsObject = {
        if ( i < postElements.length ) {
          postElements[i] : 'postElements[i]' + .value,
        } else {
          postElements[i] : 'postElements[i]' + .value
        }
      }
      Also in PHP geht das aber auch nicht Macht auch wenig Sinn.

      PHP-Code:
      <?php
      array(
        if (
      mt_rand() > 0.5) {
          
      'key' => 'gross';
        } else {
          
      'key' => 'klein';
        }
      );
      ?>
      Was willst du denn machen? Ich werd selbst aus deinem Versuch nicht so ganz schlau...
      "[URL="http://www.youtube.com/watch?v=yMAa_t9k2VA&feature=youtu.be&t=25s"]Mein Name ist Lohse, ich kaufe hier ein.[/URL]"

      Kommentar


      • #4
        Er will ein Literal erstellen, bei dem die Input-Elemente die Schlüssel (so stellt es sich jedenfalls dar) und deren Value die Werte sind. Das ganze obige Konstrukt soll die Problematik lösen, dass der letzte Literal-Eintrag kein Komma haben darf

        Wie gesagt, die Grundlage ist das:
        PHP-Code:
        var foo = {};
        foo.bla 5;
        var 
        key 'bar';
        foo[key] = 6;

        /* ergibt
        {
        bla : 5 ,
        bar : 6
        }
        */ 
        [COLOR="#F5F5FF"]--[/COLOR]
        [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
        „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
        [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
        [COLOR="#F5F5FF"]
        --[/COLOR]

        Kommentar


        • #5
          Achso, ein $(form).serialize() von jQuery *duck&wech* (weiß ja du willst selber probieren, lass mir den Spass litter )
          "[URL="http://www.youtube.com/watch?v=yMAa_t9k2VA&feature=youtu.be&t=25s"]Mein Name ist Lohse, ich kaufe hier ein.[/URL]"

          Kommentar


          • #6
            Zitat von Chriz Beitrag anzeigen
            Achso, ein $(form).serialize() von jQuery *duck&wech* (weiß ja du willst selber probieren, lass mir den Spass litter )
            Flegel

            Danke Nikosch so haut das hin.

            Gruß Litter
            Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
            [URL]http://www.lit-web.de[/URL]

            Kommentar


            • #7
              Bin leider zu blöd die Syntax kapieren

              Hallo zusammen,

              leider habe ich mich bis jetzt nicht object literals auseinandergesetzt.
              Ich habe ein mehrdimensionales Array $kaufhaus['Artikel'][$i], $kaufhaus['bild'][$i], $kaufhaus['ZText'][$i] und $kaufhaus['breite'][$i].

              Damit will ich mit dw_tooltip.js eine JavaScript Objektvariable füllen. Für dw_tooltip muss das Ganze dann so aussehen:
              Code:
              ...
              dw_Tooltip.content_vars = {
              L1: {
              	 caption: ' Dreirad für Kinder bis 6 Jahre', 
              	 img: 'images/Dreirad.gif',
              	 txt: 'praktisches Dreirad mit mit Ladefläche', ,
              	 w: 220
                   },
              L2: {
              	 caption: ' Fahrrad für Kinder bis 8 Jahre', 
              	 img: 'images/Fahrrad.gif',
              	 txt:   'Fahrrad in rot 24"',
              	 w: 220
              
                    },...
              }
              </script>
              Zunächst habe ich gedacht ich müsste das PHP-Array in JS-Array umwandeln und dann in einer For-Schleife so formatieren, dass dann im Quellcode so dasteht.
              Jetzt habe ich 'ne ganze Menge über Obejekt Literale und Arrays gelesen, krieg es aber einfach nicht umgesetzt.
              Der Ansatz mit:
              Code:
              var foo = {};
              foo.bla = 5;
              var key = 'bar';
              foo[key] = 6;
              
              /* ergibt
              {
              bla : 5 ,
              bar : 6
              }
              */
              leuchtet mir ein, aber mir erscheint das ganze sehr viel komplizierter, da ich ja auch die Namen der Eigenschaften (caption,img, ..). mit einbauen muss, Lücken im Array[$i] beachten muss usw.
              $dw = {};
              und dann. Ich kann ja wahrscheinlich nicht mit echo 'L'.$i...; vorgehen und wenn, dann muss ich ja wahrscheinlich $dw .'L'.$i.caption = $kaufhaus['Artikel'][$i]; oder sowas zusammenbasteln.
              und kann ich das dann einfach mit <?php echo in JavaScript ausgeben?
              Wäre für den ein oder anderen Tip dankbar, bevor ich wahnsinnig werde.

              DAnke vorab.

              Kommentar


              • #8
                Bitte keine uralten Threads ausgraben, stattdessen einen neuen eröffnen.

                Bitte zuerst verinnerlichen:
                PHP => Server
                JS => Browser

                Du kannst initial beim Ausgeben des Quelltextes Javascript durch PHP ausgeben lassen. Alles andere erfordert eine neue Verbindung zum Server, wenn du Daten vom Backend ins Frontend holen willst (Ajax).

                http://eloquentjavascript.net/
                http://bonsaiden.github.io/JavaScript-Garden/
                I like cooking my family and my pets.
                Use commas. Don't be a psycho.
                [URL="http://jscouch.de"]Blog[/URL] - [URL="http://coverflowjs.github.io/coverflow/"]CoverflowJS[/URL]

                Kommentar

                Lädt...
                X