JavaScript Was macht diese if-Abfrage?

shrek456

Lieutenant
Registriert
Dez. 2009
Beiträge
631
Hab mich nen bissle mit HTML, CSS und eben auch JavaScript beschäftigt und bin im Internet auf folgendes Javascript gestoßen(Ist eine aufklappbare Navigationsleiste):

Code:
<script type="text/javascript">
function switchlayer(Layer_Name)
{
  var GECKO = document.getElementById? 1:0 ;
  var NS = document.layers? 1:0 ;
  var IE = document.all? 1:0 ;

  if (GECKO)
       {document.getElementById(Layer_Name).style.display=
           (document.getElementById(Layer_Name).style.display=='block') ? 'none' : 'block';}
  else if (NS)
       {document.layers[Layer_Name].display=(document.layers[Layer_Name].display==
           'block') ? 'none' : 'block';}
  else if (IE)
       {document.all[Layer_Name].style.display=(document.all[Layer_Name].style.display==
           'block') ? 'none' : 'block';}
}
Weiter Unten im HTML folgen dann folgende Zeilen:
Code:
<ul><li><a href="untermenue.html" onclick="javascript:switchlayer('test1');
         return false;">Test1</a></li>
 <ul id="test1" style="display:none;">
  <li>testabc</li>
  <li>testdef</li>
 </ul>
</ul>

Würde gerne einfach wissen was die If-Abfrage oben genau macht. (Ich weiß das sie erstmal schaut welcher Browser benutzt wird und ob Javascript an ist aber wie genau stellt es das an?)

Mir gehts vorallem um:

document.getElementById(Layer_Name) ,
document.layers[Layer_Name] und
document.all[Layer_Name]...

Mich interessiert einfach wie das Script auf eine ID die erst viel später erzeugt wird zugreifen kann (Wird das Gesamte Dokument in den Arbeitsspeicher geladen oder wird das ganz andersgelöst???)

Achso ja falls einer der Javascript Cracks hier ne leichtere Alternative zu obrigenCode hat, bin für Verbesserungsvorschläge offen^^

Wäre toll wenn ihr mit helfen könntet will ja nicht dumm sterben^^

Shrek456
 
Generelle Abfrage auf den Browser bzw. Engine.

Code:
var GECKO = document.getElementById? 1:0 ;
Abfrage auf die Rendering-Engine.
Kannst du "document.getElementById"?
Bei "true" setze 1, sonst 0.

Code:
var NS = document.layers? 1:0 ;
Abfrage auf Netscape (document.layers)

Code:
var IE = document.all? 1:0 ;
Abfrage auf IE (document.all)

Du übergibst an die Funktion "switchlayer()" eine ID eines HTML-Elementes, dieses Element wird abgefragt ob es Sichtbar ist(CSS/Style: display:block).
Wenn Sichtbar, dann wird es ausgelblendet, sonst eingeblendet.

Diese Funktion kannst du aber getrost löschen.
Netscape gibts nicht mehr.
IE kann ab Version 5 (?) bereits "document.getElementById".
Code:
function switchLayer(strID)
{
 document.getElementById(strID).style.display = (document.getElementById(strID).style.display == 'block') ? 'none' : 'block';
}
Macht genau das Selbe.
 
Zuletzt bearbeitet:
Damit du dir gar keine Sorgen mehr um die Browser machen musst würde ich dir ein javascript Framework wie jQuery empfehlen. Und auch sonst nimmt es dir viel Arbeit ab,
$('#'+strID).toggle(); bewirkt genau das gleiche nur deutlich einfacher.
 
Ich persönlich finde man sollte die Grundsprache zuerst lernen, und dann auf Frameworks umsteigen.
Aber ich stimme dir zu. Ich mache garnichts mehr ohne jQuery...

Ist wie mit Autos.
Wer automatik fahren kann, kann nur automatik fahren.
Wer mit Gangschaltung fahren kann, kann auch mit automatik fahren ;)
 
Zurück
Oben