class eines Ankers in einem anderen Frame ändern
Andreas
- javascript
Ich hab folgendes Problem. Ich hab ein Frameset. Im linken Frame befindet sich eine Navigation. Wenn ein user auf einen Menüpunkt klickt, wird dieser Hervorgehoben. Das klappt über Javascript. Nun möchte ich dieses Javascript aber erweitern, denn es soll im Frame "content" der Anker mit dem Namen xxx (wird als Variable "ziel" übergeben) eine andere Class bekommen. Also etwas ähnliches wie ich schon habe, nur dass die Aktion in einem anderen Frame ("content") abläuft und die Anker durchgegangen werden sollen. Klickt der User auf einen anderen Link, sollen natürlich wieder alle Anker auf class="normal" zurückgestellt werden und nur der gewünschte Anker seine class auf "aktiv" wechseln.
Wäre klasse, wenn man mir helfen könnte. Stehe natürlich für Rückfragen bereit. Vielen Dank. Bei dem jetzigen Code hat mir ein Forenuser hier geholfen, dessen Name ich leider vergessen hab :(
Hier der Code:
function aktivieren(sender,ziel) {
// referenz auf das root element des menus
var menu = document.getElementById('nav');
// von dort aus alle <a> auflisten
var alleAElemente = menu.getElementsByTagName('a');
// Jetzt durch alle <a> rauschen
for(var i = 0; i < alleAElemente.length; i++)
{
// setze alle ausser dem Element, das die Funktion gestartet hat auf 'normal'
alleAElemente[i].className = alleAElemente[i] != sender ? 'normal' : 'aktiv';
}
return true;
}
Ist es überhaupt möglich, per Javascript auf andere Frames zuzugreifen und dort die Klassen zu ändern?
Ich finde leider auch nirgends irgendwelche Dokumentationen ala PHP...
Hallo Andreas
Ich hab folgendes Problem. Ich hab ein Frameset.
Ja, das ist ein Problem.
Im linken Frame befindet sich eine Navigation. Wenn ein user auf einen Menüpunkt klickt, wird dieser Hervorgehoben. Das klappt über Javascript. Nun möchte ich dieses Javascript aber erweitern, denn es soll im Frame "content" der Anker mit dem Namen xxx (wird als Variable "ziel" übergeben) eine andere Class bekommen.
Hier der Code:
...
Verstehst du diesen?
Wenn ja, dann dürfte es dir möglich sein, diesen entsprechend zu erweitern, wenn du dir dazu "Zugriff auf verschachtelte Fensterobjekte" anschaust.
Auf Wiederlesen
Detlef
Tut mir Leid, aber leider ist Javascript Neuland für mich. Ich will mich demnächst einlesen, jedoch brauch ich diese Funktion sehr schnell. Wäre also sehr dankbar, wenn man mir helfen könnte. Ich habe selbst rumprobiert - leider klappt es nicht:
function aktivieren(sender,ziel) {
// referenz auf das root element des menus
var menuRoot = document.getElementById('nav');
var ankerRoot = content.document;
// von dort aus alle <a>
var alleAElemente = menuRoot.getElementsByTagName('a');
var alleAnker = ankerRoot.anchors;
// Jetzt durch alle <a> rauschen
for(var i = 0; i < alleAElemente.length; i++)
{
// setze alle ausser dem Element, das die Funktion gestartet hat auf 'normal'
alleAElemente[i].className = alleAElemente[i] != sender ? 'normal' : 'aktiv';
}
return true;
// Jetzt durch alle <anker> rauschen
for(var i = 0; i < alleAnker.length; i++)
{
// setze alle ausser dem Element, das die Funktion gestartet hat auf 'normal'
alleAnker[i].className = alleAnker[i].name != ziel ? 'normal' : 'aktiv';
}
return true;
}
Hallo Andreas
Ich habe selbst rumprobiert - leider klappt es nicht:
Das sieht doch schon fast funktionsfähig aus.
»» function aktivieren(sender,ziel) {
>
> // referenz auf das root element des menus
> var menuRoot = document.getElementById('nav');
> var ankerRoot = content.document;
~~~ ^^^^^^^
Ist das der Name des Frames, in dem die Anker stehen?
Hast du mal auf der von mir verlinkten Seite nachgesehen?
Du musst sie ja nicht komplett durcharbeiten, was du brachst steht fast am Anfang.
~~~javascript
»» // von dort aus alle <a>
> var alleAElemente = menuRoot.getElementsByTagName('a');
> var alleAnker = ankerRoot.anchors;
>
> // Jetzt durch alle <a> rauschen
> for(var i = 0; i < alleAElemente.length; i++)
> {
> // setze alle ausser dem Element, das die Funktion gestartet hat auf 'normal'
> alleAElemente[i].className = alleAElemente[i] != sender ? 'normal' : 'aktiv';
> }
> return true;
~~~ ^^^^^^
Hiermit beendest du die Funktion. Alles, was danach kommt wird nicht mehr ausgeführt.
Auf Wiederlesen
Detlef
--
- Wissen ist gut
- Können ist besser
- aber das Beste und Interessanteste ist der Weg dahin!