2017-08-02 5 views
2

Ich bin neu in Javascript und ich brauche hier eine Anleitung.Zugriff auf Objekte innerhalb der Funktion

"use strict"; 
(function() { 

var maxHeightCalc = { 
    $maxHeight : 23, 
    $childElem : $(".equalHeights .section").length, 
    init : function() { 

     console.log(maxHeightCalc.$maxHeight); //prints 23 
     console.log(maxHeightCalc.$childElem); // prints undefined 

     for (var i=0; i<maxHeightCalc.$childElem.length; i++) { 
      console.log(i); 
     } 
    } 
}; 
$(function(){ 
    maxHeightCalc.init(); 
}) 

})(window); 

HTML-Struktur

<body> 
    <div class="equalHeights"> 
     <h1>Equal heights with OOJS </h1> 
     <div class="section section-1"> 
      <h2>Section 1 </h2> 
      <p> 
       Lorem Ipsum is simply dummy text of the printing and typesetting industry. 

      </p> 
     </div> 

     <div class="section section-2"> 
      <h2>Section 2 </h2> 
      <p> 
       Lorem Ipsum is simply dummy text of the printing and typesetting industry. 
       remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing 
       Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of 
       Lorem Ipsum. 
      </p> 
     </div> 

     <div class="section section-3"> 
      <h2>Section 3 </h2> 
      <p> 
       Lorem Ipsum i 
      </p> 
     </div> 
    </div> 
</body> 

ich zwei Objekte $ maxHeight und $ childElem haben. Ich versuche, auf beide Objekte innerhalb der Init-Funktion zuzugreifen. Ich bekomme Wert für $ maxHeight, aber für $ childElem ist der Wert nicht definiert. Kann mir bitte jemand helfen? Danke im Voraus.

+0

Können Sie die HTML auch zeigen? –

+1

Dieser Code funktioniert. Wenn ich es einfach in meiner Konsole starte, drucke es '23' und' 0', und dann 'undefined', aber es wird erwartet, da die Funktion nichts zurückgibt, daher ist der Rückgabewert nicht definiert. –

+0

Danke für den Kommentar. Wenn Sie meine HTML sehen, $ (". EqualHeights .section"). Länge muss 3 zurückgeben, aber im Moment seine Rückkehr 0, dies ist das Problem, das im –

Antwort

0

Meine Wette ist, dass, weil $(".equalHeights .section").length Objekterstellung aufgerufen wird, die wahrscheinlich nicht auf die Erstellung des DOM warten, HTML noch nicht verfügbar ist, so dass Elemente nicht gefunden werden.

Also, entweder wickeln Sie alle Ihren Code in $(function() { ... }), so dass DOM bei der Ausführung der Funktion getan wird (können Sie wahrscheinlich die IIFE loswerden), oder init Funktion starten Sie die jQuery-Element Auswahl.

Verwandte Themen