The Essence of Programming

"Widzimisie" w Operze?

16 kwietnia 2007

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;
}
Komentarze:
Jony [26 kwietnia 2007 11:40:26]

A nie lepiej po prostu użyć document.getElementById(); ?

Błażej ’snipe’ Gruszka [29 kwietnia 2007 21:23:58]

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();

3dcreator [17 czerwca 2007 19:46:49]

Poza tym Id chyba nie przechodzi walidacji na w3c, a name tak.

me [18 października 2007 20:53:48]

cos z tym kodem jest nie tak, mimo iz skladnia jest ok, bo nie wykonuje sie poprawnie w operze ani w ff

snipe [18 października 2007 20:58:11]

nie działa? nie możliwe :P jakieś błędy z konsoli w ff?

Kilka informacji o autorze

Programista, blogger, uwielbia białą czekoladę ;)