stiller: Fehler objectObject

Hallo

Sehe es irgendwie nicht mehr!

Diesen Code:

  
<div id="slide_gal" style="width: 550px; ">  
<div id="slide_box" style="width: 2200px; ">  
<div class="slide" style="width:550px; ">  
<div class="slide" style="width:550px; ">  
<div class="slide" style="width:550px; ">  
<div class="slide" style="width:550px; ">  
</div>  
</div>  

und mit diesem JQuery greife ich darauf zu:

  
$( ".slide" ).click(function(){  
	var p = $( "#slide_box" ).position();  
	var l = Math.abs(p.left);  
	var go     = $('.slide>img').attr("rel");  
	alert(l+p+go);  
	...  
  });  

Leider kann ich die Position von #slide_box nicht mehr auslesen, bekomme immer eine "[object Object]" Fehlermeldung. Vergangenheit darum, denn der Code lief schon mal...

Kann mir jemand sagen woran das liegt.

Danke + Gruss
Stiller

  1. Hallo stiller,

    var l = Math.abs(p.left);

    ^

    p ist ein Objekt.

    Gruß, Jürgen

    1. Meine Herren,

      var l = Math.abs(p.left);  
      

      p ist ein Objekt.

      und "left" eine Eigenschaft davon, ich sehe da keinen Fehler.

      jQuery über "position": "jQuery does not support getting the position coordinates of hidden elements or accounting for borders, margins, or padding set on the body element."

      Ich glaube aber eher, dass jQuery in solchen Fällen stille Fehler verursacht.

      1. Hallo 1UnitedPower,

        var l = Math.abs(p.left);  
        

        p ist ein Objekt.

        und "left" eine Eigenschaft davon, ich sehe da keinen Fehler.

        und was soll dann das ergeben?

        alert(l+p+go);

        Zahl + Objekt + ?

        Gruß, Jürgen

        1. Meine Herren,

          var l = Math.abs(p.left);  
          

          p ist ein Objekt.

          und "left" eine Eigenschaft davon, ich sehe da keinen Fehler.

          und was soll dann das ergeben?

          alert(l+p+go);

          Ich bin davon ausgegangen, dass du dich auf die Zeile bezogen hast, die du zitiert hast. Ich denke du hast einfach die falsche Zeile stehen lassen.

          Zahl + Objekt + ?

          Der "+"-Operator hängt auch Zeichenketten aneinander. In dem Fall würde also noch kein Fehler geschmissen werden, sondern die entsprechenden toString-Methoden auf die Objekte/Primitiven aufgerufen werden. Ergebnis wäre dann etwa
          "42[object Object]1337"

          Auch wenn das kein (Syntax-)Fehler ist, stimme ich dir zu und vermute, dass der OP dieses Problem gemeint hat. Semantisch sinnvoll ist die Stelle jedenfalls nicht. Gutes Auge, habe ich glatt übersehen!

  2. Lieber stiller,

    <div id="slide_gal" style="width: 550px; ">
    <div id="slide_box" style="width: 2200px; ">
    <div class="slide" style="width:550px; ">
    <div class="slide" style="width:550px; ">
    <div class="slide" style="width:550px; ">
    <div class="slide" style="width:550px; ">
    </div>
    </div>

      
    ist das Absicht, dass Du alle <div>-Elemente ineinander verschachtelst? Und hat es einen bestimmten Grund, dass Du uns von diesen sechs Elementen nur zwei sichtbar schließt? Vermutlich meinst Du folgendes Konstrukt (was Du leider nicht genügend geklärt hast!!):  
      
    ~~~html
    <div id="slide_gal" style="width: 550px; ">  
        <div id="slide_box" style="width: 2200px; ">  
            <div class="slide" style="width:550px; ">  
                <div class="slide" style="width:550px; ">  
                    <div class="slide" style="width:550px; ">  
                        <div class="slide" style="width:550px; ">  
                        </div>  
                    </div>  
                </div>  
            </div>  
        </div>  
    </div>
    

    Leider kann ich die Position von #slide_box nicht mehr auslesen, bekomme immer eine "[object Object]" Fehlermeldung.

    Wie ist der _exakte_ Wortlaut dieser Fehlermeldung? Handelt es sich um Deinen alert-Aufruf (in dem wahrscheinlich [object Object] enthalten ist), oder hast Du eine andere Art "Fehlermeldung" gemeint (leider hast Du auch dieses nicht genügend geklärt!!)?

    Vergangenheit darum, denn der Code lief schon mal...

    Warum verwendest Du nicht eine ältere und funktionierende Version Deines Codes und vergleichst sie mit Deinen Änderungen?

    Kann mir jemand sagen woran das liegt.

    Nö, dazu war Deine Beschreibung für mich an entscheidenden Stellen zu vage. Aber vielleicht hilft Dir ja dieser Hinweis weiter: Auf der API-Seite zu .position() steht ein Beispiel, in dem das von dieser Methode zurück gegebene Objekt zwei Eigenschaften hat, nämlich "left" (sozusagen die x-Coordinate von links) und "top" (y-Coordinate von oben).

    Meine Vermutung ist, dass Dein alert, der einfach alle Variablen in ihre Textform zwingt (wegen Deiner Addition), beim .position()-Objekt nicht die einzelnen Eigenschaften auflistet, sondern den Variablentyp (hier "object") ausgibt.

    Probiere doch folgendes einmal aus und melde das Ergebnis hier zurück:

    alert(  
        "p.left: " + p.left +  
        "\np.top: " + p.top +  
        "\nl: " + l +  
        "\ngo: "+ go  
    );
    

    Liebe Grüße,

    Felix Riesterer.

    --
    ie:% br:> fl:| va:) ls:[ fo:) rl:| n4:? de:> ss:| ch:? js:) mo:} zu:)