Untergeordneten HTML- Tag ansprechen
Kalle_Birkenau
- javascript
0 wahsaga0 Kalle_Birkenau0 wahsaga0 Sven Rautenberg0 Kalle_Birkenau
Hallöle,
ich habe mehrere Links:
<a id='punkt1' href=.....>Punkt 1 <img src=...></a>
<a id='punkt2' href=.....>Punkt 2 <img src=...></a>
...
Die Bilder innerhalb des <a id='punktx'> möchte ich einzeln ausblenden.
var page = new Array ("punkt1","punkt2",...);
for ( i=0; i<page.length; i++ ) {
this.document.getElementById(page[i]).style.backgroundColor = '#ccc';
...
this.document.getElementById(page[i]).image.display = 'none';
}
Die Zeile mit dem .image. klappt nicht. Wie kann ich das Bild ansprechen, ohne ihm eine eigene id geben zu müssen?
Fragt Kalle
hi,
Die Bilder innerhalb des <a id='punktx'> möchte ich einzeln ausblenden.
Ist das jeweils nur ein Bild pro Link, oder kann dieser mehrere enthalten?
this.document.getElementById(page[i]).style.backgroundColor = '#ccc';
Warum sollte document unterhalb von this liegen? Und was wäre denn in deinem Anwendungsfalle überhaupt this?
Die Zeile mit dem .image. klappt nicht. Wie kann ich das Bild ansprechen, ohne ihm eine eigene id geben zu müssen?
Als Kindknoten des Links. Aber Achtung, es muss nicht unbedingt der erste Kindknoten sein - durch whitespace erzeugte Textknoten könnten noch davor kommen.
Auf deinen Linkknoten getElementsByTagName("img") anzuwenden, wäre eine weitere Möglichkeit.
Man könnte aber auch einfach dem Link selber per className eine Klasse verpassen, für die im CSS definiert ist, das darin liegende Bilder nicht angezeigt werden:
.ausblendeKlasse img { ... }
gruß,
wahsaga
hi,
Ist das jeweils nur ein Bild pro Link, oder kann dieser mehrere enthalten?
Nur eins: <a ...>Text <img src='../img/icon_haken.gif' class='hide'></a>
Ein Haken, der anzeigen soll, dass dieser Link bereits besucht wurde.
a img.hide {visibility:hidden}
a:visited img.hide {visibility:visible}
Wenn ich jedoch einen angeklickten Link erneut anklicke, muss das Bild wieder ausgeblendet werden, weil der aktive Link rechtsbündig angezeigt wird und damit das Bild in eine neue Zeile rutscht.
Hier JS im Ganzen:
<script language="JavaScript" type="text/javascript">
<!--
var page = new Array (
"index","hardware","software","schulung","marketing","webseiten","wlan","umts","kontakt","radio","fragen");
for ( i=0; i<page.length; i++ ) {
if( parent.location.href.indexOf( page[i] ) >=0 ) {
document.write("");
this.document.getElementById(page[i]).style.color = '#000';
this.document.getElementById(page[i]).style.backgroundColor = '#ccc';
this.document.getElementById(page[i]).style.letterSpacing = '1px';
// this.document.getElementById(page[i]).style.border = '1px solid #f00';
this.document.getElementById(page[i]).style.textAlign = 'right';
this.document.getElementById(page[i]).style.fontWeight = 'bold';
this.document.getElementById(page[i]).style.textTransform = 'uppercase';
// this.document.getElementById('i_'+page[i]).style.display = 'none';
this.document.getElementById(page[i]).getElementsByTagName("img").display = 'none';
}
}
// -->
</script>
Hier bei eingeschaltetem JavaScript noch ohne den Haken zu sehen: http://www.osmer.de
Die Zeile mit .getElementsByTagName("img"). funzt so aber auch nicht, wie geht das denn?
LG Kalle
hi,
Die Zeile mit .getElementsByTagName("img"). funzt so aber auch nicht, wie geht das denn?
Natürlich nicht - weil getElementsByTagName ja mehrere Elemente betreffen kann, gibt es dir eine Collection zurück - auf deren einzelne Elemente du mittels eines Index zugreifen musst.
Aber mal in selfhtml nachzulesen, bevor du fragst, könnte wohl auch kaum schaden, oder?
gruß,
wahsaga
Moin!
Nur eins: <a ...>Text <img src='../img/icon_haken.gif' class='hide'></a>
Ein Haken, der anzeigen soll, dass dieser Link bereits besucht wurde.
a img.hide {visibility:hidden}
a:visited img.hide {visibility:visible}Wenn ich jedoch einen angeklickten Link erneut anklicke, muss das Bild wieder ausgeblendet werden, weil der aktive Link rechtsbündig angezeigt wird und damit das Bild in eine neue Zeile rutscht.
Das ist doch keine Aufgabe, die man mit Javascript lösen muß!
Der aktive Link kriegt einfach eine passende ID zugewiesen (z.B. id="selektiert"), und mit CSS wird zusätzlich zu den obigen CSS-Definitionen auch noch für den selektierten Link (besucht oder unbesucht) eine Darstellung definiert.
<a href="..." id="selektiert"> Text <img></a>
a#selektiert img.hide {visibility:hidden} (bzw. besser display:none, weil das keinen Platz einnimmt).
Deine Seitenlösung halte ich sowieso für extrem suboptimal: Die Navigation steckt in einem Iframe, obwohl PHP verfügbar ist, und die wird dann auch noch mit Javascript formatiert. Warum kein PHP dafür nutzen?
- Sven Rautenberg
Moin Sven! Auch vonne Küste?
Deine Seitenlösung halte ich sowieso für extrem suboptimal: Die Navigation steckt in einem Iframe, obwohl PHP verfügbar ist, und die wird dann auch noch mit Javascript formatiert. Warum kein PHP dafür nutzen?
Grund 1: Kosten
PHP steht zum Testen lokal nicht zur Verfügung, in der Vergangenheit hat mich die ISDN- Verbindung viel Geld gekostet. Das relativiert sich, weil ich jetzt DSL habe.
Gut, manchmal hat man als Solist ohne Kollegenkontakt auch ein Brett vor dem Kopf und rennt immer wieder gegen die Wand. Hatte WAMP installiert, dann Oracle und der PC "stand" fast. Alles wieder runtergeschmissen. Deshalb bin ich immer dankbar für kritische Fragen und Anregungen.
Und bei DSL muss ich höllisch aufpassen, dass meine Seiten nicht zu umfangreich werden, man merkt die jämmerlichen Ladezeiten der Modembesitzer ja nicht mehr. Neulich hatte ich einen auf dem Lande, dessen analoge Leitung nur 28 kbs hergab statt der erwarteten 56 kbs. Aber auch er zahlt pro Minute bei AOL den vollen Preis.
Oh, ich merke gerade, du hast da in ein Nest gestochen und es läuft aus. Also zurück zum Thema.
Grund 2: Fitness / Training
Ich will auch mit JavaScript fit bleiben. Warum rennt jemand im Sommer mit Skistöcken durch den Wald, obwohl er nirgendwo hin will?
Grund 3: Faszination
Habe mit JavaScript schon ein paar kleine Anwendungen geschrieben, die nur einen Browser brauchen, unabhängig vom Betriebssystem. Große Anwendungen kann es nicht geben, da JavaScript keine Daten zuverlässig speichern kann. Cookies sind mit ein paar Mausklicks gelöscht. Schade eigentlich.
Habe den besuchten Seiten jetzt mit CSS den Haken als Hintergrundgrafik gegeben. Geht erstmal so ...
Kalle
Hi,
PHP steht zum Testen lokal nicht zur Verfügung,
Was genau hindert Dich daran, das lokal zu installieren?
cu,
Andreas
Hi Andreas,
PHP steht zum Testen lokal nicht zur Verfügung,
Was genau hindert Dich daran, das lokal zu installieren?
Bequemlichkeit, Ignoranz? Okay, du hast mich ertappt **schäm**
Nein, genauer:
--------------
PHP ist mir nicht ganz geheuer, weil es eine "Zugabe" des Providers ist, die ich nicht im Griff habe.
Auszug aus meinem Mailverkehr:
03.11.2005 Eingang:
-------------------
Sehr geehrter Herr Osmer,
wie Sie in der Fachpresse und in diversen Online-Diensten in den vergangenen Tagen bereits nachlesen konnten, sind in allen bisherigen Versionen der Scriptsprache PHP einige zum Teil sicherheitskritische Fehler entdeckt worden. Durch diese Fehler ist es möglich, dass potentielle Angreifer durch bösartigen PHP-Code Zugriff auf die Webserver erhalten.
...
Das Entwickler-Team von PHP hat nach Bekanntwerden der Sicherheitslücken unverzüglich reagiert und mit Version 4.4.1 ein Update zur Verfügung gestellt.
Um die Betriebssicherheit unserer Server und damit die Verfügbarkeit Ihrer Internetpräsenz auch weiterhin sicherzustellen werden wir am
Donnerstag, den 10.11.2005
das Update auf diese neue PHP-Version vornehmen.
05.11.2005 Ausgang:
-------------------
Sehr geehrtes Technik- Team,
wäre ein Update auf PHP Version 5 möglich?
Wende auf einem anderen Server die bessere Session- Verwaltung mit PHP 5 an. Da im Moment wenig Traffic ist, wäre die Zeit für mich günstig, zu testen und den Code ggf. nachzupflegen.
08.11.2005 09:02 Eingang:
-------------------------
Sehr geehrter Herr Omser,
Entschuldigen Sie bitte die verspätete Antwort und vielen Dank für Ihre Anfrage.
Natürlich können Sie zu aktuellen PHP 4 - Versionen auch die Version 5
nutzen. Dabei muss jedoch ein Tarifwechsel in den aktuellen Jota 2.0 100
vorgenommen werden, da nur dort PHP 4 und 5 parallel unterstütz wird.
Zum Wechsel Ihres Tarifes übersende ich Ihnen anbei ein bereits
vorausgefülltes Bestellformular.
08.11.2005 17:27 Eingang:
-------------------------
Sehr geehrter Herr Osmer,
am vergangenen Donnerstag hatten wir Sie per E-Mail über ein geplantes PHP-Update auf die Version 4.4.1 informiert.
Zwischenzeitlich wurde jedoch auch in dieser Version ein Fehler gefunden, durch den PHP-Programme unter Umständen hängen bleiben können.
Wir haben daher kurzfristig entschieden, dieses Update NICHT einzuspielen und warten auf die Bereitstellung der nächsten Version von PHP in welcher dieser Fehler korrigiert wurde.
Natürlich erhalten sie mit genügend zeitlichem Vorlauf eine Information, sobald diese Version zur Verfügung steht und wann das Update durchgeführt wird.
Nun ja, lassen wir das.
Kalle **frustiert die Chipstüte leerend**
Moin!
Nein, genauer:
PHP ist mir nicht ganz geheuer, weil es eine "Zugabe" des Providers ist, die ich nicht im Griff habe.
Naja, Javascript ist auch eine "Zugabe", allerdings vom Browser, die du ebenfalls nicht im Griff hast. Allerdings auf einem noch viel komplexeren Level, denn jeder Browser kann anders sein, es gibt ungefähr vier verschiedene Javascript-Versionen mit unterschiedlichen Möglichkeiten, der zugrundeliegende ECMA-Standard beschreibt überdies lediglich die grundsätzlichen Sprachgrundlagen, definiert aber überhaupt nicht, welche DOM-Elemente existieren sollen. XMLHttpRequest beispielsweise ist nur in den aktuellsten Browsern vorhanden, und es müßte entweder eine funktionell gleichwertige Alternative oder eine funktionelle Umgehung geben, wenn es nicht existiert.
Bei PHP hast du wenigstens die Möglichkeit, deinen einzigen Server so zu programmieren, dass es entsprechend der installierten Version funktioniert - und wenn es das tut, dann wird es das immer tun.
Neuen PHP-Versionen werden in der Regel auch nicht im Funktionsumfang beschnitten, sondern eigentlich nur erweitert. Es dürfte also kaum vorkommen, dass bestehende Skripte bei Versionsupdates nicht mehr laufen - dass es, wie in deinen Mails geschildert, ausgerechnet bei Version 4.4.1 zu solchen Problemen kommt, ist im Prinzip einer gewissen Schlamperei der PHP-Programmierer zuzurechnen, die schlicht neue Fehler eingebaut haben, als sie alte Fehler behoben.
Deshalb kriegst du ja auch noch kein Update auf 4.4.1, sondern bleibst vermutlich bei 4.4.0. Du hast eben einen verantwortungsbewußten Provider.
Mit einem eigenen Server hättest du solche Einflüsse übrigens komplett selbst in deiner Hand - aber natürlich auch höhere Kosten und mehr Verantwortung.
- Sven Rautenberg
hi,
Neuen PHP-Versionen werden in der Regel auch nicht im Funktionsumfang beschnitten, sondern eigentlich nur erweitert. Es dürfte also kaum vorkommen, dass bestehende Skripte bei Versionsupdates nicht mehr laufen
Von der beliebten "Falle" auf register_globals=on vertrauender Scripte mal abgesehen ;-)
Aber das sollte bei PHP-Versionen um 4.4.irgendwas ja eigentlich(!) kein Thema mehr sein ...
gruß,
wahsaga
hi,
Grund 2: Fitness / Training
Ich will auch mit JavaScript fit bleiben.
Kein grund, es dort einzusetzen, wo es fehl am Platze ist.
Warum rennt jemand im Sommer mit Skistöcken durch den Wald, obwohl er nirgendwo hin will?
Du versuchst gerade im Fahradfahren "fit zu bleiben", in dem du es unterwasser ausübst ...
gruß,
wahsaga