Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Różnica w interpetacji javascript w IE a FF/O - ukrywanie i odkrywanie elementów strony, problemy z używaniem niektórych klas, metod, czy zmiennych w IE.
Everizon
post 14.05.2009, 20:57:55
Post #1





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 21.10.2008

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


Witam.
Pół dnia kombinowania by fragment strony wyświetlał się i reagował tak samo w IE(7) i FF3.x i w Operze !! Człowieka może trafić !!
Problem dotyczył wyświetlania lub ukrywania jednego <select> w zależności od wybranej opcji w drugim <select>
Okazało się że w IE użycie:
Kod
               document.getElementById("status").value

inaczej działa w IE a inaczej w FF/O
Ale już działanie:
Kod
               document.getElementsByName("status_przedmiotu").item(0).value

działa tak samo w każdym przypadku.

Podaję działający kod do wykorzystania dla innych. Działa poprawnie w IE i FF oraz O.
Powoduje ukrywanie <select id="magazyny"> lub wyświetlanie w zalezności od ustawień opcji <select name="status_przedmiotu">

Kod HTML:
Kod
             <html>
             <head>
                  <script type="text/javascript" language="javascript" src="script.js"></script>
             </head>
             <body>
                  <form method="POST" action="link_do_obslugi_np.php">
                       <select name="magazyn" id="magazyny">
                            <?php for($aa=0;$aa<$pozycja;$aa++)echo '<option>'.$magazynki[$aa].'</option>'; ?>
                       </select>
                     <br/>
                     <select name="status_przedmiotu" id="status">
                          <option value="Nie dostarczony">Nie dostarczony</option>
                          <option value="Dostarczony">Dostarczony</option>
                     </select>
                     <br/>
                     <input type="SUBMIT" value="Wybierz"/>
                  </form>
             </body>
             </html>

kod javascript działający poprawnie w każdej przeglądarce:
Kod
           window.onload=zdarzenia;
         function zdarzenia(){
             document.getElementsByName("status_przedmiotu").item(0).onchange=zmiana_mag;
             zmiana_mag();
         }
         function zmiana_mag(){
             if(document.getElementsByName("status_przedmiotu").item(0).value=="Dostarczony"){
                 document.getElementById("magazyny").style.display='';
             }else{
                 document.getElementById("magazyny").style.display='none';
             }
         }

kod javascript działający poprawnie w FF oraz Opera a nie działający w IE (czasem zadziałał tylko na początku ukrywając wybranego selecta. Potem już reakcja onchange jakby nie reagowała wykonaniem funkcji zmiana_mag;
Kod
           window.onload=zdarzenia;
           function zdarzenia(){
               document.getElementsById("status").onchange=zmiana_mag;
               zmiana_mag();
           }
           function zmiana_mag(){
               if(document.getElementsById("status").value=="Dostarczony"){
                   document.getElementById("magazyny").style.display='';
               }else{
                   document.getElementById("magazyny").style.display='none';
               }
           }

Moje pytanie brzmi: Ktoś wie dlaczego jedna metoda działa w obu (byName) a druga (byId) tylko w FF/O
Czy jedna jest standardem a druga nie ? czy to IE jest do Du.. (na to stawiam). Czy może FF/O na za dużo sobie pozwalają.
A może problem polega na mojej miernej znajomości zasad?
Mam nadzieję że ktoś skorzysta z powyższego.
Pozdrawiam

Ten post edytował Everizon 15.05.2009, 21:01:46
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: 26.04.2024 - 08:54