„Widzimisie” w Operze?

Może mi ktoś powiedzieć, dlaczego ten kod nie chce działać w Operze?? Jedyna informacja jaką udało mi się znaleźć na ten temat – aptana.com. Czyżby Opera nie wspierała document.getElementsByName oraz length??

entries = document.getElementsByName("miniblog_content");
for(i=0; i < entries.length; i++) {
    entries[i].style.display = entries[i].style.display == "block" ? "none" : "block";
}

Problem rozwiązany:
Przejrzałem W3C i znalazłem info:

The getElementsByName() method returns a collection of objects with the specified NAME.

Tak więc wnioskując z opisu, metodę tą można wykorzystać do wszystkich obiektów znajdujących się na stronie, również dla <div>. W swoich przykładach na developer.mozilla.org pokazano przykłady ustawiania parametru name dla znacznika <div>. A co na to Opera? Opera mówi nie! i nie wspiera pobierania za pomocą document.getElementsByName() znaczników innych niż <input>.

Tak więc trzeba sobie poradzić w inny sposób :-/

Można sobie poradzić z getElementsByName na Operze i IE stosując małą sztuczkę 😉

function getElementsByName_fix(tag, name) {   
    var elem = document.getElementsByTagName(tag);
    var arr = new Array();
    for(i = 0,iarr = 0; i < elem.length; i++) {
        att = elem[i].getAttribute("name");
        if(att == name) {
            arr[iarr] = elem[i];
            iarr++;
        }
    }
    return arr;
}

5 thoughts on “„Widzimisie” w Operze?

  1. Można by użyć document.getElementById(), ale każdemu elementowi należałoby nadać unikalne id i przemieszczać się po nich poprzez pętlę 😉 Jak dla mnie nadal prostszym rozwiązaniem(nie biorąc pod uwagę Opery :P) jest document.getElementsByName();

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *