funktion, Übergabeparameter,CSS
Tobias
- javascript
Hallo,
ich will durch eine Funktion die Eigenschaften eines css-elemens ändern.Ganz spezifisch sichtbar und unsichtbar machen. Welches css das ist soll per übergabeparameter erzählt werden. Für IE und NC7 funzt das auch wunder bar. Nur für NC4 einfach nicht. Dazu hab ich bisher folgendes
function setvisibility(divid)
{
//Hier die Browserweiche
if (document.layers)
{ browserstyle="document.layers."+divid;
visible="show";
}
//anschließen tun sich die Brwoserweichen für IE und NC7
//und schließlich
if (browserstyle.visibility.toLowerCase() == visible)
browserstyle.visibility = "hidden";
else
browserstyle.visibility = "visible";
}
Nun krieg ich aber in der javscript-konsole die Meldung "browserstyle have no proberties"
Gestern wurde mir in einem andren Thread gesagt, dass das darin liegt, dass es ein String sei. Wie krieg ich das nnun aber hin das er meine Angabe versteht??
Vielen Dank schon mal im Vorraus!
Bitte nicht meckern dass ich ein ähnliches Problem schon mal hier vorgestellt habe!
Tobias
Gestern wurde mir in einem andren Thread gesagt, dass das darin liegt, dass es ein String sei. Wie krieg ich das nnun aber hin das er meine Angabe versteht??
Indem du dich ein wenig mit dHTML beschäfitgst
http://selfhtml.teamone.de/dhtml/index.htm
In deinem konkreten Fall kommt zusätzlich noch einige Lücken in JS sazu:
http://selfhtml.teamone.de/javascript/index.htm
Struppi.
Hallo Tobias,
versuch's mal mit eval(string). Außerdem heißt es bei Layern "visibility", nicht "visible". Und - ich weiß, ich kann nicht aufhören, zu meckern ;-) - spricht man Layer soweit ich weiß entweder über die Nummer an:
document.layers[3]
(also mit eckigen Klammern da Array) oder über den Namen, dann aber ohne das "layers":
document.layername
(siehe: http://selfhtml.teamone.de/javascript/objekte/layers.htm#allgemeines)
Kann aber sein, dass deine Methode unter bestimmten Umständen auch hinhaut.
Das ganze sieht dann so aus:
if (document.layers) {
eval("document.layers[" + divid + "].visibility='show'");
}
(siehe: http://selfhtml.teamone.de/javascript/objekte/unabhaengig.htm#eval
Viel Erfolg,
Robert
Kann aber sein, dass deine Methode unter bestimmten Umständen auch hinhaut.
Das ganze sieht dann so aus:
if (document.layers) {
eval("document.layers[" + divid + "].visibility='show'");
}(siehe: http://selfhtml.teamone.de/javascript/objekte/unabhaengig.htm#eval
Da ist fehlerträchtig, langsamer und führt im Netscape vermehrt zu Abstürzen und zu allem Überdruss ist es auch noch überflüssig:
if (document.layers) {
document.layers[divid].visibility='show';
}
Macht ohne die obigen Nachteile genau das Gleiche.
Aber das steht auch alles in der von mir geposteten Rubrik.
Es gibt genau drei Methoden um Layer per JS zu finden und anzusprechen
function getLayer(id)
{
if(document.layers) return document.layers[id];
else if(document.getElementById) return document.getElementById(id);
else if(document.all) return document.all[id];
alert('Der Browser kann kein dHTML");
return null;
}
(für den NC 4.x gibt es damit aber eine Enschränkung, wenn der Layer in einem Layer sitzt)
Struppi.
Hallo,
auch dir danke!
Da ich mit dieser Materie erst beginne sind mir Idiotensichere Antworten zunächst lieber. Werd mich aber auch um die Topics kümmern die du mir angeboten hast!
Danke und Tschau
Tobias
Hallo,
auch dir danke!
Da ich mit dieser Materie erst beginne sind mir Idiotensichere Antworten zunächst lieber. Werd mich aber auch um die Topics kümmern die du mir angeboten hast!
Naja, idiotensicher ist diese auch nicht. Sie führt wie gesagt dazu, das Netscape gern mal abstürzt ohne das es nötig wäre.
Struppi.
Hallo Struppi,
Da ist fehlerträchtig, langsamer und führt im Netscape vermehrt zu Abstürzen und zu allem Überdruss ist es auch noch überflüssig:
if (document.layers) {
document.layers[divid].visibility='show';
}
Ähm ja, natürlich. Jetzt habe ich mich selbst verwirrt durch meine Bemerkung, wie man Layer in NC 4 ansprechen kann. Wenn die Nummer des Layers bekannt ist, geht das natürlich so, wie du oben geschrieben hast. Aber geht das auch, wenn nur der Name (aus dem name-Attribut im layer-Tag) bekannt ist? Allerdings ist dann natürlich auch mein Vorschlag falsch, es müsste heißen:
eval("document." + divid + ".visibility = 'show');
(unter der Annahme, dass in divid der Name, nicht die Nummer des Layers gespeichert ist.)
Aber das steht auch alles in der von mir geposteten Rubrik.
Meinst du "Objekt-Handling in JavaScript"? Liegt gerade im Ausgabefach meines Druckers ;-)
<besserwisserisch>(Fällt mir gerade auf: Müsste es nicht eigentlich entweder "Object-Handling" (mit "c") oder "Objekt-Bearbeitung" heißen?)</besserwisserisch>
Es gibt genau drei Methoden um Layer per JS zu finden und anzusprechen
function getLayer(id)
{
if(document.layers) return document.layers[id];
else if(document.getElementById) return document.getElementById(id);
else if(document.all) return document.all[id];
alert('Der Browser kann kein dHTML");
return null;
}
Irgendwie kann ich mich mit der Bezeichnung "Layer" für div-Tags noch nicht ganz anfreunden, auch wenn es rein sprachlich korrekt ist...
Ich habe (als ich DHTML-geschrieben habe) immer zwischen Layern und divs unterschieden. Die einen waren die Netscape-Lösung und ließen sich über das document.layers-Objekt ansprechen. Die anderen waren die Microsoft-Alternative und hörten auf document.all, wie alles im IE (DOM-fähige Browser gab's damals noch nicht). Deswegen habe ich mit dem Ansprechen von Layern auch nur das Ansprechen von layer-Tags (also <layer ...>...</layer>) über das document.layers-Objekt gemeint, also das, was oben im ersten if-Zweig steht.
Robert
Hallo nochmal,
Aber das steht auch alles in der von mir geposteten Rubrik.
Meinst du "Objekt-Handling in JavaScript"?
War natürlich Blödsinn. Jetzt weiß ich, worauf du dich beziehst. Ich hab' erst jetzt dein anderes Posting gelesen.
Robert
Irgendwie kann ich mich mit der Bezeichnung "Layer" für div-Tags noch nicht ganz anfreunden, auch wenn es rein sprachlich korrekt ist...
Nicht sprachlich.
Layer sind positionierte Objekte in einem Dokument. (Vielleicht ist ja ein Layoutspezialist hier der das besser definiert)
Der Inhalt des <div> Tag kann alles Mögliche sein, aber wenn's positioniert ist, ist's ein Layer.
Struppi.
Hallo,
jetzt klappt alles genauso wie ich es will. NUR jedoch solange ich die
gewisse datei nicht mit PHP include(). Dann funzt in NC4 wieder mal nix.
Alle anderen Browser zicken nicht rum!
Bitte gibt mir nen Tip woran das nun schon wieder liegen kan!
Tschau und Danke
Der verzweifelte Tobias
Hallo,
jetzt klappt alles genauso wie ich es will. NUR jedoch solange ich die
gewisse datei nicht mit PHP include(). Dann funzt in NC4 wieder mal nix.
Du weisst, wie du JS-Fehler im Netscape anzeigen lassen kanst?
Alle anderen Browser zicken nicht rum!
Bitte gibt mir nen Tip woran das nun schon wieder liegen kan!
Deine Fehlerbeschreibungen und deine Fülle an Informationen sind immer wieder erstaunlich episch, leider nicht genug um uns unserem Bedürfniss dir zu helfen leichter zu machen.
Struppi.