tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
9
ZUGRIFFE
560
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    mo-ca mo-ca ist offline Mitglied
    Registriert seit
    Apr 2004
    Beiträge
    23
    Moin,

    also ich will meine <li>, die ich mit getElementsByTagName auslese, in ein Array speichern und dann einzeln ansprechen können.

    Code :
    1
    2
    3
    4
    
    myLis = new Array();
        for(i=0;i<myDiv.getElementsByTagName('li').length;i++) 
            myLis[i] = myDiv.getElementsByTagName('li')[i];
            document.write(myDiv.getelementsByTagName('Li'))

    so gehts nicht ...

    Wer kann mir dabei helfen ?
     

  2. #2
    Avatar von Sven Mintel
    Sven Mintel Sven Mintel ist offline Mitglied
    Registriert seit
    Aug 2003
    Beiträge
    18.238
    Blog-Einträge
    6
    Hallo... du kannst entweder alle <li> im Dokument direkt ansprechen...:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    
    <html>
    <head>
    <title>Test</title>
    </head>
    <body>
    <ol>
     <li>Item#a1</li>
     <li>Item#a2</li>
     <li>Item#a3</li>
    </ol>
    <ul>
     <li>Item#b1</li>
     <li>Item#b2</li>
     <li>Item#b3</li>
    </ul>
    <script type="text/javascript">
    <!--
    myItems=new Array();
    for(i=0;i<document.getElementsByTagName('li').length;++i)
        {
        myItems.push(document.getElementsByTagName('li')[i]);
        document.write('<br>*'+myItems[i].innerHTML);
        }
    //-->
    </script>
    </body>
    </html>


    ... oder aber bspw.über dasNode-Objekt alle <li> in einer speziellen Liste:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    
    <html>
    <head>
    <title>Test</title>
    </head>
    <body>
     <ol id="myList">
      <li>Item#1</li>
      <li>Item#2</li>
      <li>Item#3</li>
    </ol>
     
    <script type="text/javascript">
    <!--
    myItems=new Array();
    var myNode = document.getElementById("myList").firstChild;
    while (myNode!=null)
    {
      myItems.push(myNode);
      document.write('<br>*'+myItems[myItems.length-1].innerHTML);
      myNode = myNode.nextSibling;
    }
    //-->
    </script>
    </body>
    </html>
     

  3. #3
    Registriert seit
    Nov 2002
    Ort
    Altdorf bei Nürnberg
    Beiträge
    3.027
    Hallo,

    document.write(myDiv.getelementsByTagName('Li'))
    Willst du ein Objekt ausgeben?
    Ich glaube kaum.
    Du kannst nur einzelne Werte eines Objekte ausgeben, aber nicht das ganze.

    Versuch mal das:
    Code :
    1
    2
    3
    4
    5
    
    myLis = window.document.getElementsByTagName('li');
     
    for (i=0; i<myLis.length; i++) {
        window.document.write(myLis[i].className + "<br />\r\n");
    }
     

  4. #4
    mo-ca mo-ca ist offline Mitglied
    Registriert seit
    Apr 2004
    Beiträge
    23
    mmh

    Ich habe einen Fehler gemacht, indem ich eine Zeile zuviel gepastet hab.

    Das mitm Schreiben gehört gar nicht dazu! Es geht darum, dass ich die li, die getelementsbytag findet geordnet ins array kommen, damit ich die dann mit mylis[1] usw ansprechen kann!

    danke trotzdem schonmal
     

  5. #5
    Avatar von Sven Mintel
    Sven Mintel Sven Mintel ist offline Mitglied
    Registriert seit
    Aug 2003
    Beiträge
    18.238
    Blog-Einträge
    6
    Wozu eigentlich extra in einen neuen Array packen..... da sind sie schon von vornherein drinnen....mit:
    Code :
    1
    
    document.getElementsByTagName('li')[1]
    kannst du jederzeit das erste <li> im Dokument ansprechen.

    Es heisst wohlgemerk getElementsByTagName und nicht getelementsbytagname... Javascript unterscheidet penibel zwischen Gross/Kleinschreibung
     

  6. #6
    mo-ca mo-ca ist offline Mitglied
    Registriert seit
    Apr 2004
    Beiträge
    23
    mmh theoretisch hast du sicher recht [praktisch bestimmt auch], nur leider klappts bei mir nicht

    Wenn ich versucht mit this.myDiv.getElementsByTagName('li')[0] zu arbeiten, bekomme ich ein: ist null/kein Objekt zurück.

    Link zum Problemfall
     

  7. #7
    Avatar von Sven Mintel
    Sven Mintel Sven Mintel ist offline Mitglied
    Registriert seit
    Aug 2003
    Beiträge
    18.238
    Blog-Einträge
    6
    Also bei mir geht das problemlos....

    in function Menu() hat folgendes:
    Code :
    1
    2
    3
    4
    5
    6
    7
    
    // Alle Unterpunkte
        var myDiv = document.getElementById( "nav_pop_" + objLink.id.strRight("nav0_") );
        if(myDiv.getElementsByTagName('li').length>0)
            {
            myDiv.getElementsByTagName('li')[0].onmouseover = new Function("F","handlerMouseOver(myDiv.getElementsByTagName('li'))");
            myDiv.getElementsByTagName('li')[0].onmouseout = new Function("F","handlerMouseOut(myDiv.getElementsByTagName('li'))");
            }

    ...die selbe Funktionalität wie das bisherige:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    
    // Alle Unterpunkte
     
        var myDiv = document.getElementById( "nav_pop_" + objLink.id.strRight("nav0_") ); //div mit id
    //  var myLis = myDiv.getElementsByTagName('li'); //li aus dem div
        myLis = new Array();
        for ( var i=0; i < myDiv.getElementsByTagName('li').length;i++ ) {
            myLis[i] = myDiv.getElementsByTagName('li')[i];
            //alert( myLis[1]);
        }
        myLis[0].onmouseover = new Function("handlerMouseOver(myDiv.getElementsByTagName('li))");
        myLis[0].onmouseout = new Function("handlerMouseOut(myDiv.getElementsByTagName('li'))");
     
     
    //  this.myLis[x].onmouseover = new Function("handlerMouseOver(this)");
        //links.onmouseout = new Function("handlerMouseOut(this)");
    ...das Objekt wird so auch gefunden.

    Zum einen besteht da allerdings die Frage, warum du alle <li> durchgehen willst, wenn du dann doch nur den ersten manipulieren willst....

    Code :
    1
    
    myLis[0].onmouseover.......

    zum Anderen funktioniert die Zuweisung des Funktionsaufrufes so nicht....
    Code :
    1
    
    new Function("handlerMouseOut(myDiv.getElementsByTagName('li'))");

    ...das Objekt "myDiv" ist nur innerhalb von "Menu()" bekannt, du kannst es nicht als Objekt übergeben.
    stell dir das vor, als ob jetzt in der Seite stehen würde...
    Code :
    1
    
    <li onmouseout="handlerMouseOut(myDiv.getElementsByTagName('li'))">
    .... und myDiv kannst du logischerweise auch nicht global deklarieren... denn jede Liste stellt ein eigenes "myDiv" dar.

    Du könntest den Funktionen schlicht die ID der Listen übergeben.
     

  8. #8
    mo-ca mo-ca ist offline Mitglied
    Registriert seit
    Apr 2004
    Beiträge
    23
    Nein, ich will nicht nur das erste li benutzen.

    Ich brauche eigentlich die Links, damit ich die mit mouseover belegen kann (bei mouseover -> killTimer, bei onmouseout -> startTimer)

    Irgendwie stell ich mich mometan dumm an.
    Naja, danke für die Hilfe
     

  9. #9
    Avatar von Sven Mintel
    Sven Mintel Sven Mintel ist offline Mitglied
    Registriert seit
    Aug 2003
    Beiträge
    18.238
    Blog-Einträge
    6
    Versuchs mal hiermit:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    
    function handlerMouseOver(ID)
    {
    clearTimeout(menuObjs[ID]);
    }
     
    function handlerMouseOut(ID)
    {
    menuObjs[ID]=setTimeout("reset_menu('"+ID+"',false)", 1000);
    }
     
    function handlerMouseClick(ID)
    {
    for(var e in menuObjs)
        {
        clearTimeout(menuObjs[ID]);
        }
    reset_menu(ID,true);
    }
     
    function reset_menu(ID,evt)
    {
    for(var e in menuObjs)
        {
        if(evt||e==ID)
            {
            document.getElementById(e).className=(evt&&e==ID)?'active':'';
            document.getElementById( "nav_pop_" + e.strRight("nav0_")).style.display=(evt&&e==ID)?'block':'none';
            }
        }
    }
     
    function Menu( objLink )
    {
    var myDiv = document.getElementById( "nav_pop_" + objLink.id.strRight("nav0_") );
    over=   new Function("fIn","handlerMouseOver('"+objLink.id+"')");
    out=    new Function("fOut","handlerMouseOut('"+objLink.id+"')");
    click=  new Function("fOn","handlerMouseClick('"+objLink.id+"');return false;");
    objLink.onclick =click;objLink.onmouseover =over;objLink.onmouseout =out;
    for(i=0;i<myDiv.getElementsByTagName('li').length;++i)
        {
        myDiv.getElementsByTagName('li')[i].onmouseover = over;
        myDiv.getElementsByTagName('li')[i].onmouseout = out;
        }
    return true;
    }
     

  10. #10
    mo-ca mo-ca ist offline Mitglied
    Registriert seit
    Apr 2004
    Beiträge
    23
    bist ein held

    wenn ich das nicht mit nem anderen menü (ja habs neu gemacht ) schon gepackt hätte, hätte ich das sicher gebrauchen können.

    Tut mir leid, dass du soviel Arbeit (leider umsonst) gemacht hast.
     

Ähnliche Themen

  1. Antworten: 5
    Letzter Beitrag: 22.02.10, 12:05
  2. Wie Array in Dataset speichern (vb.net)
    Von kwmaster im Forum .NET Datenverwaltung
    Antworten: 3
    Letzter Beitrag: 22.06.09, 08:30
  3. Array in sql-db speichern
    Von Baasel im Forum PHP
    Antworten: 5
    Letzter Beitrag: 19.08.08, 15:26
  4. Array speichern
    Von gloor im Forum C/C++
    Antworten: 1
    Letzter Beitrag: 31.03.08, 17:23
  5. Array in array speichern
    Von Lord_Fritte im Forum PHP
    Antworten: 8
    Letzter Beitrag: 30.12.04, 16:29