6 Stimmen

Listenelement-Index in HTML ul-Liste mit Javascript abrufen

Ich habe die folgende HTML-Seite:

<html>
    <head>
        <script type="text/javascript" src="JavaScript/Menu.js"></script>
    </head>
    <body>
        <ul>
            <li><a onclick="GetIndex(this)">One</a></li>
            <li><a onclick="GetIndex(this)">Two</a></li>
            <li><a onclick="GetIndex(this)">Three</a></li>
            <li><a onclick="GetIndex(this)">Four</a></li>
        </ul>
    </body>
</html>

Und das Menu.js-Javascript:

function GetIndex(sender)
{   
    var aElements = sender.parentNode.parentNode.getElementsByTagName("a");
    var aElementsLength = aElements.length;

    var index;
    for (var i = 0; i < aElementsLength; i++)
    {
        if (aElements[i] == sender) //this condition is never true
        {
            index = i;
            return index;
        }
    }
}

Warum wird die kommentierte Bedingung nie erfüllt? Wie kann ich vergleichen, ob die beiden HTML-Elemente in Javascript gleich sind? Vielen Dank für die Hilfe.

11voto

xj9 Punkte 3216

"Ihr Code ist korrekt"

2voto

dareapersven Punkte 71

Old Post, aber hier ist eine schnelle Funktion, um dies zu tun:

function nodeIndex(el) {
    var i=0;
    while(el.previousElementSibling ) {
        el=el.previousElementSibling;
        i++;
    }
    return i;
}

Dies sollte mit einer Elementreferenz als Parameter funktionieren. Es gibt im Grunde nur die Anzahl der vorherigen Geschwister zurück.

1voto

Vin.X Punkte 4691

Zu verwenden versuchen:

if (aElements[i] === Absender)

anstelle von

if (aElements[i] == sender)

0voto

Chinmayee G Punkte 7797

Sind Sie sicher, dass GetIndex Funktion auf Klick-Ereignis auf Anker-Tag ausgeführt wird?

Versuchen Sie es, indem Sie dem Anker-Tag das Attribut href geben. Sie können entweder schreiben

<a href="#" onclick="GetIndex(this)">One</a>

ou

<a href="javascript:void(0)" onclick="GetIndex(this)">One</a>

Hier ist das Arbeitsbeispiel http://jsfiddle.net/QfRSb/

0voto

Maciek Semik Punkte 1784

Jquery kann helfen mit prevAll()

$(document).on("click","li",function(){
 var index=$(this).prevAll();
 alert(index);
});

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X