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>
<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';
}
}
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';
}
}
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