Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [JAVASCRIPT] IE8 Object required
TheaSiX
post
Post #1





Grupa: Zarejestrowani
Postów: 110
Pomógł: 10
Dołączył: 3.09.2006
Skąd: Bishop Auckland

Ostrzeżenie: (0%)
-----


Napisalem prosty skrypt do animowanego menu, chodzi tylko o pojawianie się menu z góry w dół. W firefoxie wszystko działa jak należy. Niestety sytuacja przedstawia się o wiele gorzej w IE. dostaje błędy:

Cytat
Webpage error details
Message: Object required
Line: 17
Char: 4
Code: 0

Message: Object required
Line: 6
Char: 4
Code: 0


oto kod skryptu:

  1. function showUnderMenu(the_number){
  2. var the_number = parseInt(the_number);
  3. var all_divs = window.document.getElementsByName('menu-content');
  4. for(var loop=0;loop < all_divs.length+1;loop++) {
  5. if(loop == the_number) {
  6. var div_vis = all_divs.item(loop).style.visibility;
  7. if(div_vis == "hidden") {
  8. all_divs.item(loop).style.height = "0px";
  9. all_divs.item(loop).style.visibility = "visible";
  10. slideDiv(loop);
  11. }
  12. else {
  13. all_divs.item(loop).style.visibility = "hidden";
  14. }
  15. }
  16. else {
  17. all_divs.item(loop).style.visibility = "hidden";
  18. }
  19. }
  20. }


nie mam zielonego pojęcia dlaczego. Próbowałem zamiast zmiennych użyć całych ścieżek obiektu (window.document.get bla bla), ale to nie pomogło. Ktoś wie dlaczego w IE8 wszystko się sypie?
Go to the top of the page
+Quote Post
lord_t
post
Post #2





Grupa: Zarejestrowani
Postów: 603
Pomógł: 131
Dołączył: 24.07.2007
Skąd: Górny Śląsk

Ostrzeżenie: (0%)
-----


Co to za metoda item()? Domyślam się jej działania, ale nie umiem naleźć na jej temat ani słowa na googlu. Czemu nie używasz po prostu nawiasów kwadratowych do wybrania elementu tablicy?

Go to the top of the page
+Quote Post
zegarek84
post
Post #3





Grupa: Zarejestrowani
Postów: 1 332
Pomógł: 294
Dołączył: 12.10.2008
Skąd: Olkusz

Ostrzeżenie: (0%)
-----


nie byłem pewny do końca (choć w sumie byłem dlatego pod tym kontem przeszukiwałem neta)
Cytat
@Rex - Nelson is annoyed about the fact that getElementsByName(name) does NOT return the correct results in IE6, IE7, [[AND WAS NOT FIXED IN IE8!!!]

w necie jest sporo fix'ów na to - więc albo z nich skorzystaj albo użyj innej metody do znajdowania elementów (IMG:style_emoticons/default/winksmiley.jpg)

Cytat(lord_t @ 2.02.2010, 01:02:28 ) *
Co to za metoda item()? Domyślam się jej działania, ale nie umiem naleźć na jej temat ani słowa na googlu. Czemu nie używasz po prostu nawiasów kwadratowych do wybrania elementu tablicy?

https://developer.mozilla.org/pl/DOM_i_JavaScript
Cytat
Używamy również anchorTags[i], tej samej składni, która w JavaScripcie używana jest przy dostępie do i-tego elementu tablicy. Neutralnie językowym sposobem jest używanie metody item(), zdefiniowanej w interfejsie NodeList): anchorTags.item(1).href. Jednak większość implementacji JavaScriptu pozwala na używanie prostszej, tablicowej składni i takiej właśnie używa większość ludzi.


w php w DOM np. już przez tablicę nie da się odwołać (IMG:style_emoticons/default/winksmiley.jpg) - ogólnie jest to odwołanie do kolejnego z elementów dom na liście

Ten post edytował zegarek84 2.02.2010, 01:14:09
Go to the top of the page
+Quote Post
TheaSiX
post
Post #4





Grupa: Zarejestrowani
Postów: 110
Pomógł: 10
Dołączył: 3.09.2006
Skąd: Bishop Auckland

Ostrzeżenie: (0%)
-----


pozmieniałem parę rzeczy, ale coś po drodze jeszcze bardziej mi się zamieszało. Zapytam więc od podstaw, a co..

  1. function showUnderMenu(theId){
  2. if(document.getElementById(theId).style.visibility == "hidden") {
  3. document.getElementById(theId).style.visibility = "visible";
  4. }
  5. }


z jakiej racji wypluwa błąd o braku obiektu? uprzedzam, że wcześniej miałme window.document i to samo. Wprawdzie działać skrypt działa, ale bład jest nadal..
Go to the top of the page
+Quote Post
zegarek84
post
Post #5





Grupa: Zarejestrowani
Postów: 1 332
Pomógł: 294
Dołączył: 12.10.2008
Skąd: Olkusz

Ostrzeżenie: (0%)
-----


może daj linka do wersji online?? - skoro piszesz, że działa i dokładnie nie wiadomo gdzie w końcu jest błąd - piszesz o całości a dajesz tylko fragment ;p
Go to the top of the page
+Quote Post
TheaSiX
post
Post #6





Grupa: Zarejestrowani
Postów: 110
Pomógł: 10
Dołączył: 3.09.2006
Skąd: Bishop Auckland

Ostrzeżenie: (0%)
-----


to co dałem post nad Tobą to całość, tylko by sprawdzić, czy IE coś wypluje i wypluło..

udało mi się sprawić, że większość skryptu działa, ale błąd jest nadal. Nawet jeśli do wyniku atrybutu visibility przypiszę najpierw zmienną, a potem ją sprawdzę, to nadal jest błąd, ten sam, tam gdzie przypisuję zmienną.

fakt, że skrypt działa to jedno, ale znowu błąd komplikuje walidacje i pozycjonowanie, więc nadal byłoby wskazane go usunąć..
Go to the top of the page
+Quote Post
zegarek84
post
Post #7





Grupa: Zarejestrowani
Postów: 1 332
Pomógł: 294
Dołączył: 12.10.2008
Skąd: Olkusz

Ostrzeżenie: (0%)
-----


tak - całość - akurat IE na każdy błąd jest najbardziej czuły chyba ze wszystkich przeglądarek... i jeśli w jakiś sposób nie przechwytujesz błędów to po ich wystąpieniu następuje koniec skryptu - jak chcesz i uważasz, że ktoś inny będzie zgadywał to proszę bardzo (IMG:style_emoticons/default/winksmiley.jpg) - chociaż nie mam pod ręką akurat IE to w powyższym błędu nie widzę ;p
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 18.09.2025 - 06:18