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;
}
A nie lepiej po prostu użyć document.getElementById(); ?
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();
Poza tym Id chyba nie przechodzi walidacji na w3c, a name tak.
cos z tym kodem jest nie tak, mimo iz skladnia jest ok, bo nie wykonuje sie poprawnie w operze ani w ff
nie działa? nie możliwe 😛 jakieś błędy z konsoli w ff?