kostenloser Webspace werbefrei: lima-city


Per JS einen link eine onclick funktion zuweisen!

lima-cityForumDie eigene HomepageHTML, CSS & Javascript

  1. Autor dieses Themas

    christian1603

    Kostenloser Webspace von christian1603

    christian1603 hat kostenlosen Webspace.

    Hallo LC,
    ich habe eine Funktion um alle links in einer Website auslesenzulassen und den Link zu ändern. Nun will ich zusätzlich den links noch eine onclick Funktion zuweisen. Wie geht das?


    var arr = new Array();
            arr = document.documentElement.getElementsByTagName("a");     
            for(var i = 0; i < arr.length; i++)
            {
                var obj = document.documentElement.getElementsByTagName("a").item(i);
                  var url = obj.href;
                  obj.href = "#"+url ;
            obj.onclick = function() { alert(url); };
           
            
                            
                            }


    Er setzt überall den richtigen anker aber den falschen alert :O
    Woran liegt das!? Der setzt überall den alert des letzten URLs?!


    ich kann nur den href ändern oder die onclick funktion zuweißen.
    Beides zusammen geht nicht ?!

    Beitrag zuletzt geändert: 13.8.2011 11:02:50 von christian1603
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. t*****b

    christian1603 schrieb:
    Er setzt überall den richtigen anker aber den falschen alert :O
    Woran liegt das!? Der setzt überall den alert des letzten URLs?![/b]


    Das liegt daran, dass der Wert von URL immer der gleiche ist, du legst ja keine verschiedenen URLs an sondern änderst immer nur den einen Wert. Anders wäre es mit einem Array:

    var arr = new Array();
    var url = newArray();
            arr = document.documentElement.getElementsByTagName("a");     
            for(var i = 0; i < arr.length; i++)
            {
                var obj = document.documentElement.getElementsByTagName("a").item(i);
                  url[i] = obj.href;
                  obj.href = "#"+url[i];
            obj.onclick = function() { alert(url[i]); };
    }



    Beitrag zuletzt geändert: 13.8.2011 11:42:11 von trueweb
  4. Autor dieses Themas

    christian1603

    Kostenloser Webspace von christian1603

    christian1603 hat kostenlosen Webspace.

    Danke erstmal, aber leider geht das nicht?!
    sry

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
      <meta http-equiv="content-type" content="text/html; charset=windows-1250">
      <meta name="generator" content="PSPad editor, www.pspad.com">
      <title></title>
      </head>
      <body>
              <script>  
                function link(){
            var arr = new Array();
    var url = new Array();
            arr = document.documentElement.getElementsByTagName("a");     
            for(var i = 0; i < arr.length; i++)
            {
                var obj = document.documentElement.getElementsByTagName("a").item(i);
                  url[i] = obj.href;
                  
                  obj.href = "#"+url[i];
            obj.onclick = function() { alert(url[i]); }; 
    }
    
             }
    
            </script>
              <a href="link1">link1</a>    <br><a href="link2">link2</a> <br><b onclick="link();"> test</b>
      </body>
    </html>




    Beitrag zuletzt geändert: 13.8.2011 12:21:29 von christian1603
  5. nehme folgenden Code:
    function link(){
        var elementA = [],
            url = [],
            // Diese Funktion wird beim klicken ausgeführt!
            // Das Zurückgeben einer weiteren Funktion ist in
            // diesem Fall notwendig und dient der Performance!
            closureFN = function(url){return function(){
                alert(url)
                return false;
            }},
            // benötigte Variablen am besten schon am Anfang
            // der Funktion initialisieren!
            i,
            obj; 
        elementA = document.getElementsByTagName("a");     
        for(i = elementA.length; i--; ){ // Rückwärtzählen ist schneller
            obj = elementA[i];
            obj.onclick = closureFN(obj.href);
            url[i] = obj.href;
            obj.href = "#"+url[i];
        }
    }
    Das funktioniert auf jeden Fall.

    Für leichter lesbare Lösungen muss man wesentlich mehr Aufwand betreiben und sie sind nicht so performant.

    Mit freundlichen Grüßen
  6. Autor dieses Themas

    christian1603

    Kostenloser Webspace von christian1603

    christian1603 hat kostenlosen Webspace.

    nemoinho schrieb:
    nehme folgenden Code:Das funktioniert auf jeden Fall.

    Für leichter lesbare Lösungen muss man wesentlich mehr Aufwand betreiben und sie sind nicht so performant.

    Mit freundlichen Grüßen


    danke!!!
    Klapt super!
  7. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!