Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Problem z getElementsByName IE
hombrerro
post 15.06.2005, 20:06:41
Post #1





Grupa: Zarejestrowani
Postów: 23
Pomógł: 0
Dołączył: 31.07.2003
Skąd: Warszawa

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


Witam

Prosze o pomoc w nastepujacej sprawie bo osiwieje.

Chcialem skorzystac z funckcji getElementsByName podczas iteracji przez
wszystkie pola formularza zeby ukryc odpowiednie elementy.
Wszystko dziala ok w firefoxie natomiast w IE nie.

Chodzi o kod w tej klauzuli:
if(groupElementsCount>parseInt(groupMinRepeats) && groupMinRepeats ){
..
}

W firefoxie id elementu grupy elegancko jest wyswietlane natomiast w IE cisza.
Czym jest obiekt zwracany przez getElementsByName w IE?
Dlaczego nie jest tablica obiektow html tak jak w firefoksie?
groupFound.length w FF zwraca 2 (co jest poprawne bo sa dwa takie elementy) w IE 0.

Szukalem wczoraj rozwiazania na wlasna reke ale jakos mi nie wyszlo, chyba juz mialem tego dosc. Prosze o pomoc lub wskazowki.
Kod
if(groupName){
 groupMaxRepeats = formElement.getAttribute('group_max_repeats');
 groupMinRepeats = formElement.getAttribute('group_min_repeats');
 groupActRepeat  = formElement.getAttribute('group_act_repeat');
 groupElementContainer =document.getElementById('TR_Field_'+fieldName);

 if(groupMinRepeats){
   groupContainer[a++] = fieldParent;
 }

 groupElementsCount = array_search(groupContainer,fieldParent);

 if(groupElementsCount>parseInt(groupMinRepeats) && groupMinRepeats ){
//
// O TEN FRAGMENT KODU CHODZI
//
 groupFound = document.getElementsByName(groupName);
   for( hide=0; hide < groupFound.length; hide++){

// W FF WYSWIETLA TR_Field_ID_... OK
// W IE WYSWIETLA NIC!!

     alert(groupFound[hide].getAttribute('id'));
     //groupFound[hide].style.display = 'none';
   }
 }
 else{
   formElement.value = parseInt(groupElementsCount);
 }
}


SOS

--------------------------

sobie poradzilem

internet explorer w dosc specyficzny sposób rozumie znaczenie tej funkcji:
getElementsById zwraca kolekcje obiektów z takim samym name i id.
Jeżli element ma tylko name o okreslonej wartosci nie zostanie przez ta funkcje odnaleziony.

Diablo sprytnie wymyślone. Mniej wiecej 3.5 godziny bezzsensownej straty czasu.

Ten post edytował hombrerro 15.06.2005, 22:49:00
Go to the top of the page
+Quote Post
Sokrates
post 3.07.2008, 22:54:50
Post #2





Grupa: Zarejestrowani
Postów: 96
Pomógł: 0
Dołączył: 11.09.2006
Skąd: Wrocław

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


kurcze,....
Ja też na tym poległem, aż se wku....
i zacząłem szukać w necie i natknąłem się na twoja wypowiedz...
Bardzo mi pomogła...

Pozdrawiam,


--------------------
Pozdrawiam,
Sokrates
Go to the top of the page
+Quote Post
paziek
post 23.07.2008, 14:28:22
Post #3





Grupa: Zarejestrowani
Postów: 207
Pomógł: 25
Dołączył: 16.11.2006

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


  1. if(typeof(window.external) != 'undefined' && document.attachEvent) {
  2.      document.getElementsByName = function(name, tag) {
  3.            if(!tag) tag = '*';
  4.            var elems=document.getElementsByTagName(tag),x=elems.length,i,res=[];
  5.            for(i=0;i<x;i++){
  6.                  att = elems[i].getAttribute('name');
  7.                  if(att == name) res.push(elems[i]);
  8.            }
  9.            return res;
  10.      }
  11. }


Znalezione, trochę poprawione. Działa smile.gif
tag jest opcjonalny - zawęża rezultat do danego tagu - poprawia wydajność. Jeśli nie podasz ( np. document.getElementsByName('jakieśName') ) to użyje wildcarda, znaczy sprawdzi wszystkie elementy dokumentu w poszukiwaniu danego name.

Ten post edytował paziek 23.07.2008, 14:28:41
Go to the top of the page
+Quote Post
dark_root
post 25.11.2009, 16:47:18
Post #4





Grupa: Zarejestrowani
Postów: 341
Pomógł: 1
Dołączył: 19.11.2007

Ostrzeżenie: (10%)
X----


A jak użyć tego kodu?
Nie za bardzo kapuje o co w nim chodzi.
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 03:29