Sören: Verschwindenlassen von Layer funktioniert nicht

Hi,

ich hab ein Problem. Ich habe mir mit einer For-Schleife eine beliebige Anzahl von Layers erstellt. Jetzt will ich, wenn ich in eines dieser Layer-Bereiche klicke, das mir dieser Layer ausgeblendet wird.

Dafür habe ich folgende Funktion geschrieben:

  
function versuch() {  
document.getElementById(this).visibility = "hidden"  
}  

Wenn ich jetzt in das Layer-Feld klicke, wird mir als Fehler angezeigt das document.getElementById(this) keine properties hat.

Wo liegt mein Fehler?

gruß
Sören

  1. Wo liegt mein Fehler?

    dein code is totaler schwachsinn probiers ma so:

      
    function versuch(a) {  
    a.style.visibility = "hidden"  
    }  
    
    
    1. dein code is totaler schwachsinn probiers ma so:

      dein code ist auch nicht viel besser ;) - ein element mit this anzusprechen, wenn die funktion das betreffende element direkt ausblenden soll ist nicht so verkehrt

      1. dein code ist auch nicht viel besser ;) - ein element mit this anzusprechen, wenn die funktion das betreffende element direkt ausblenden soll ist nicht so verkehrt

        dann ist gunnars script genau so falsch

        function versuch(element)
        {
          element.style.visibility = "hidden";
        }

        2 zu 1 denk mal drüber nach :P

        1. dein code ist auch nicht viel besser ;) - ein element mit this anzusprechen, wenn die funktion das betreffende element direkt ausblenden soll ist nicht so verkehrt

          dann ist gunnars script genau so falsch

          function versuch(element)
          {
            element.style.visibility = "hidden";
          }

          2 zu 1 denk mal drüber nach :P

          also das script von gunnar funzt einwandfrei und macht genau das was es soll...

          danke für die schnelle hilfe

          gruß
          Sören

      2. dein code is totaler schwachsinn probiers ma so:
        dein code ist auch nicht viel besser ;) - ein element mit this anzusprechen, wenn die funktion das betreffende element direkt ausblenden soll ist nicht so verkehrt

        nachtrag, siehe hier:
        http://www.quirksmode.org/js/this.html

      3. Hi,

        ein element mit this anzusprechen, wenn die funktion das betreffende element direkt ausblenden soll ist nicht so verkehrt

        es sei denn, 'this' ist das window-Objekt (oder sonstwas), und nicht das betreffende Element. So wie es in dem genannten Code der Fall ist.

        Cheatah

        --
        X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
        X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
        X-Will-Answer-Email: No
        X-Please-Search-Archive-First: Absolutely Yes
  2. Wenn ich jetzt in das Layer-Feld klicke, wird mir als Fehler angezeigt das document.getElementById(this) keine properties hat.

    document.getElementById(this) hat auch keine properties erst document.getElementById(this).style hat welche die du ansprechen kannst

    Wo liegt mein Fehler?

    siehe oben, denk nochmal nach

    1. Hi,

      document.getElementById(this) hat auch keine properties

      *hüstel* sofern 'this' etwas wäre, was als ID im Dokumentbaum zu finden ist, hätte das daraus resultierende Objekt selbstverständlich auch Properties ...

      erst document.getElementById(this).style hat welche

      ... beispielsweise 'style'. Und wenn document.getElementById(this) schon keine Properties hat, dann kann dessen style-Property ebenfalls keine haben. Es sei denn, Du bist Mathematiker und hast es Dir zur Philosophie gemacht, dass alle geraden Primzahlen größer 2 Quadratzahlen sind.

      Cheatah

      --
      X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
      X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
      X-Will-Answer-Email: No
      X-Please-Search-Archive-First: Absolutely Yes
      1. ... beispielsweise 'style'. Und wenn document.getElementById(this) schon keine Properties hat, dann kann dessen style-Property ebenfalls keine haben.
        wo du recht hast, hast du recht ;) jetzt hab ich geschlafen und jetzt ist mir das auch klar, dass ich hier zu schnell geschossen habe

        Es sei denn, Du bist Mathematiker und hast es Dir zur Philosophie gemacht, dass alle geraden Primzahlen größer 2 Quadratzahlen sind.

        gerade Primzahlen größer 2 Quadratzahlen - den muss ich mir merken :D

  3. @@Sören:

    function versuch() {
    document.getElementById(this).visibility = "hidden"
    }

    Wenn ich jetzt in das Layer-Feld klicke, wird mir als Fehler angezeigt das document.getElementById(this) keine properties hat.

    1. IIRC ist 'this' in dem Falle das Funktions-Objekt.

    2. Möchtest du keine 'visibility'-Eigenschaft des Objekts neu einführen, sondern von dessen Unterobjekt 'style' die 'visibility'-Eigenschaft setzen.

    Mach es so:

    function versuch(element)  
    {  
      element.style.visibility = "hidden";  
    }
    

    Aufruf per <foo onclick="[code lang=javascript]versuch(this);">[/code]

    Dann sparst du auch die unnötigen 'document.getElementById()'.

    Live long and prosper,
    Gunnar

    --
    Flughafen in Tempelhof
    findet jeder Hempel doof.