link-status (active) via javascript(OnEvent) setzen?

Dieses Thema im Forum "Web-Know-how für die Homepage" wurde erstellt von dragon_MF, 23. Januar 2004.

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. dragon_MF

    dragon_MF Megabyte

    Registriert seit:
    17. August 2001
    Beiträge:
    1.109
    Hallo!

    Ich versuche den status eines links zu ändern, der sich innerhalb einer Tabelle befindet. Bisher rufen sowohl ein klick auf den link als auch ein klick auf die Tabellenzelle (per Javascript und "onMousedown") in einem anderen Frame eine neue Datei auf. (man muss also nicht den link treffen, um den menüpunkt auszuwählen, sondern nur die Zelle).
    Mein Problem ist, dass ein Klick auf die Tabellenzelle den link nicht "active" setzt. Wenn ich den link betätige ist er "active" und damit weiß und unterstrichen und der Besucher wüsste, wo er sich befindet. Bei einem klick in die Zelle ändert dies natürlich den status des links nicht und man sieht nicht, wo man sich gerade befindet. Daher würde ich gern wissen, wie ich diese Status-Änderung nachträglich mit dem onmousedown-event verknüpfen kann (ich hab es mit den getelementbytagname usw. nicht geschafft auf diese Eigenschaft zuzugreifen, nur auf das Verknüpfungsziel (href).
    Ach ja, der link-status ist in einer css-datei definiert.
    Wär nett, wenn mir da jemand weiterhelfen könnte.
    Gruß

    Martin
     
  2. Gast

    Gast Guest

    no problem....

    hab das script auch noch hier.. vielleicht brauch ich es selber mal :D
     
  3. dragon_MF

    dragon_MF Megabyte

    Registriert seit:
    17. August 2001
    Beiträge:
    1.109
    Jojojo! Bist'n Held! *ordenverleih*
    :bet:
    Funktioniert auch inner Tabelle wunderbar.
    Hatte nur eine Macke: Beim Laden der Seite wurde immer der zweite Link unterstrichen, warum, weiß ich nicht, da die Seite, die zum ersten gehört, automatisch geladen wird.
    Ich habe daher in die Startseite das onload="parent.Navigation.test('0')" eingebaut und lasse es für den Start somit manuell auf den ersten link setzen.
    Einwandfrei. Jetzt muss ich nur noch die CSS-Eigenschaften etwas anpassen und kann mich endlich inhaltlicheren Dingen kümmern...
    Vielen lieben Dank für die investierte Zeit und Mühe! :)
    Gruß

    Martin
     
  4. Gast

    Gast Guest

    :D

    Probier das mal, mit copy & past in ne leere HTML Datei einfügen

    --- Start der HTML Datei ---
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <html>
    <head><title>Untitled</title></head>
    <script type="text/javascript">
    function test(lnk)
    {
    var lnk_name = new Array("home","news","kontakt","impressum","links");
    for(var i=0;i<lnk_name.length;i++)
    {document.getElementById(lnk_name).className ="ohne";}
    document.getElementById(lnk_name[lnk]).className ="unter";
    }
    </script>
    <style type="text/css">
    a.menu:link{text-decoration:none;color:#ff0000}
    a.menu:visited{text-decoration:none;color:#ff0000}
    a.menu:hover{text-decoration:none;color:#ff0000}
    a.meun:active{text-decoration:none;color:#ff0000}
    .unter{text-decoration:unterline;color:#ff0000}
    .ohne{text-decoration:none;color:#ff0000}
    </style>
    <body>
    <a class="menu" id="home" href="#" onClick="test('0')" onfocus="blur()">Home</a><br>
    <a class="menu" id="news" href="#" onClick="test('1')" onfocus="blur()">News</a><br>
    <a class="menu" id="kontakt" href="#" onClick="test('2')" onfocus="blur()">Kontakt</a><br>
    <a class="menu" id="impressum" href="#" onClick="test('3')" onfocus="blur()">Impressum</a><br>
    <a class="menu" id="links" href="#" onClick="test('4')" onfocus="blur()">Links</a><br><br><br>
    </body>
    </html>
    --- Ende der HTML Datei ---

    Den CSS Befehl text-decoration kannste nicht direkt bearbeiten. (wegen dem Bindestrich, wird von Javascript als Minus interpretiert)

    Der Befehl getElementById ruft erst ein Class auf, und setzt den Befehl im Class dann als Id ein.

    Der Befehl onClick ruft beim Klicken das Script auf.
    Der Array beinhaltet die ID Namen, mit denen auf die Links zugegriffen wird. Die Daten im Array fangen immer bei 0 an zu zählen.
    Also ist der erste Datensatz imm Array 0. Der zweite 1 usw.

    Der For Befehl arbeitet den Array ab und ändert den Status auf NICHT unterstrichen.
    So werden erst alle Links auf nicht unterstrichen gesetzt.

    Der zweite getElementById Befehl setzt dann den Status (unterstrichen) für den geklickten Link.

    Der onFocus Befehl bewirkt nur, das der gestrichelte Kasten um den Link (beim Klicken) verschwindet. Er hat keinen Einfluss auf die Funktion des Scriptes!

    Funzt unter IE und Firebird (Mozilla, Netscape)

    Hach, bin ich heute wieder gut! :cool:

    :p Michael :p
     
  5. Gast

    Gast Guest

    nein ist es nicht....

    du willst ja, wenn seite x geladen wird, das der linkstatus sich ändert, und das kannste am besten mit dem onLoad befehl.

    wenn ich morgen zeit habe, klemm ich mich mal hinter, und versuch das script zusammen zu bauen
     
  6. dragon_MF

    dragon_MF Megabyte

    Registriert seit:
    17. August 2001
    Beiträge:
    1.109
    wäre das nicht egal, von wo das script aufgerufen wird?
    Oder macht das was aus?

    Ich sehe mich z.Z. eher daran scheitern, wie der korrekte getElementById-Aufruf auszusehen hat (was du da so schön gepunktet hast), bisher hat er ja noch nicht funktioniert... ;-(
     
  7. Gast

    Gast Guest

    du musst es anders machen

    das script musste in html setzen, wo auch die links geändert werden!

    das steuern des scriptes machste dann von der anderen seite.

    z.b.

    oberer frame = menu
    und der name des oberen frames ist oben
    unterer frame = anzeige
    und der name des unteren frames ist unten

    oberer frame:

    das script
    ...
    function lnk_active(linkname)
    {
    ....
    }


    unterer frame:

    <body onLoad="parent.oben.lnk_active('kontakt')">
    .......

    mit parent+frame name+funktionsname kannste aus anderen frames auf scripte zugreifen.
    genauso kannste aus anderen frames in ein bestimmtes frame schreiben!

    parent.framexyz.document.write("hallo")

    du kannst auch anstatt des framenamens nummern angeben
    parent.frame[0].(funktionsname)

    angefangen wird beim zählen von 0
    auschlagebend ist die framereihenfolge im frameset

    vieleicht bekommste das ja so hin
     
  8. dragon_MF

    dragon_MF Megabyte

    Registriert seit:
    17. August 2001
    Beiträge:
    1.109
    Hm, scheint es nicht wirklich zu geben...zumindest bekomm ich nicht zum laufen...
    is aber auch schlecht dokumentiert im netz, was da erlaubt ist und was nicht...

    Wenn ich ein javascript schreibe, dem ich eine ID übergebe, welches dann folgenden Befehl enthält:
    document.getElementById("uebergebenelinkID").style = "text-decoration:underline";

    Warum geht das nicht?
    Gruß

    Martin
     
  9. Gast

    Gast Guest

    hmmm, allerhöchsten

    getElementById("link").document.style.a.link = "text-decoration:none";
    oder
    ... ("link).style.a.link=.....
    allerdings musste wenn dies überhaupt möglich ist, auch die css befehle active, hover, visited ändern.

    vielleicht wärs einfacher, dies ohne frames zu machen, dann kannste pseudofrormate für jeden link angeben

    bsp:

    a.test:link{....}
    a.test:hover{....}
    a.test:active{....}
    a.test:visited{....}

    a.test_X:link{....}
    ....


    dann im body

    <a class="test" href=.....>test</a>
    <a cvlass=test_x" href="....>x</a>

    so kannste jeden link einzelnd mit css bearbeiten.

    du kannst auch noch die links zusammenfassen

    a.link bis a.visited{ alle daten, die in jedem einzelen link immer vorkommen}

    und dann für jeden link wieder die spezifischen daten.

    wenn getElementById nicht geht, wüsste ich nur noch, wie du es per Image machen kannst.
     
  10. dragon_MF

    dragon_MF Megabyte

    Registriert seit:
    17. August 2001
    Beiträge:
    1.109
    ein beispiel für einen link steht doch oben... :confused:

    ja okay,aber wie lautet der getelementbyID-Aufruf für den status eines links?
    Etwa so? (für aktiv setzen):

    document.getElementById("link").xxxxx = active;

    Wobei
    <a id="link" href="startseite.htm">Grüße, Bürger!</a>

    die ID vergibt?
    Und was müsste dann für das xxxxx stehen?
     
  11. Gast

    Gast Guest

    schmeiss mal nen link auf den markt!

    bsp mit getElementById

    <html><head><title>Test</title>
    <style type="text/css">
    <!--
    .normal { font-style:normal }
    -->
    </style>
    <script type="text/javascript">
    <!--
    function Ausrichten(wie) {
    document.getElementById("unentschlossen").align = wie;
    }
    //-->
    </script>
    </head><body>
    <h1 id="unentschlossen">Wo gehöre ich eigentlich hin?</h1>
    <a href="javascript:Ausrichten('left')">links?</a><br>
    <a href="javascript:Ausrichten('center')">zentriert?</a><br>
    <a href="javascript:Ausrichten('right')">rechts?</a><br>
    </body></html>
     
  12. dragon_MF

    dragon_MF Megabyte

    Registriert seit:
    17. August 2001
    Beiträge:
    1.109
    Der link wird aktiv geschaltet, wenn er betätigt wird. Ich möchte aber auch, wenn nur die Tabellenzelle getroffen wird, dass er aktiv geschaltet wird.
    Ja richtig, sowohl der klick auf den link, als auch der Klick in die Zelle, wo der link steht, laden eine neue Seite in einem anderen Frame.
    Wenn diese angezeigt wird, nachdem nur die Zelle getroffen wurde, soll der link genauso aktiv sein, als hätte man den link selbst angeklickt.
    Wie wäre das mit deinem genannten "getelementbyID" machbar?

    Bisher sieht eine Zelle (bzw. Zeile) in der Tabelle so aus:
    <tr><td width=100% height=40 border=0 style="border-width:1px 0px; border-color:#FF8040;" onMouseDown="this.style.backgroundColor='black';javascript:Frame('startseite.htm','Daten');" onmouseover="this.style.borderStyle ='solid'; this.style.backgroundColor='white';" onMouseUp="this.style.backgroundColor='#4F915A';" onmouseout="this.style.borderStyle = 'none'; this.style.backgroundColor='#4F915A';"> <a class="type_1" href="startseite.htm" target="Daten">Grüße, Bürger!</a></td></tr>
     
  13. Gast

    Gast Guest

    hmmm, wenn ich das richtig verstanden habe, willst du den link aktiv schalten, wenn er betätigt wird, sprich, wird die neue seite in einem anderen frame geladen, soll der link unterstrichen sein!

    oder gibts keine frames

    wenns keine frames gibt, kannste mit dem pseudo css die links unterschiedlich definieren, ansonsten würd mir nur noch einfallen

    getElementById
     
Status des Themas:
Es sind keine weiteren Antworten möglich.

Diese Seite empfehlen