Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: JavaScript działa,
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
ksenonlogin
Witam

Skrypt ma za zadanie podmieniać element <div></div> po wybraniu odpowiedniego elementu z listy (<option></option>).
Wszystko ładnie działa (przykład - konrad-lewczuk.pl), jednak według wykładowcy w JavaScript jest jakiś błąd.

Niżej zamieszczam java script:
  1. <script type="text/javascript">
  2. <!-- // <![CDATA[
  3. function akcja(zmienna) {
  4. var ile = document.getElementById('wybrana').options.length;
  5. for(var i=1; i<=ile; i++) {
  6. var jaka = 'iddiv'+i;
  7. if(jaka != zmienna) {
  8. document.getElementById(jaka).style.display = 'none';
  9. }
  10. else if(jaka == zmienna) {
  11. document.getElementById(jaka).style.display = 'block';
  12. }
  13. }
  14. }
  15. // ]]> -->




Niżej zamieszczam HTML:
  1. <form id="akcja" action="#">
  2. <p><select name="wybrana" id="wybrana" onchange="akcja(this.value);">
  3. <option value="iddiv1">Imię, Nazwisko</option>
  4. <option value="iddiv2">Tok nauki</option>
  5. <option value="iddiv3">Telefon</option>
  6. <option value="iddiv4">Email</option>
  7. <option value="iddiv5">Twoja zmienna</option>
  8. </select></p>
  9. </form>
  10.  
  11. <div id="iddiv1">Konrad Lewczuk</div>
  12. <div id="iddiv2">Informatyka, Nr albumu: 7611</div>
  13. <div id="iddiv3">Tel: 531447823</div>
  14. <div id="iddiv4">kontakt@konrad-lewczuk.pl</div>



Niżej zamieszczam CSS:
  1. #iddiv1 {
  2. display: block;
  3. }
  4. #iddiv2,#iddiv3,#iddiv4,#iddiv5 {
  5. display: none;
  6. }
zegarek84
jakiśquestionmark.gif to wykładowca nie wie jaki jest błąd??

ja tu za bardzo nie widzę błędu - mogę jedynie napisać drobne uwagi...

wszystko zależy co dokładnie miałeś zrobić - jeśli podmianę elementu drzewa DOM potraktować dosłownie to nic nie podmieniasz, po prostu ukrywasz pozostałe elementy a pokazujesz inny który de fakto tam był i jest...

następne ale to tylko szczegół i nie jest tutaj błędem, a jedynie jeśli ogólnie znasz strukturę HTML'a na którego piszesz funkcję a nie masz wpływu na jej poprawną strukturę to mogłeś sprawdzić, czy wyszukało Ci elementy o zadanym id by następne metody w razie braku danego obiektu nie spowodowały błędu...

var el;
el = document.getElementById(jaka);
el && el.style.display = 'none'; // lub if(el) el.style.display = 'none';
Crozin
@zegarek84: Zamiast masy IF-ów nie dających żadnej kontroli nad błędami lepiej skorzystać z fundamentalnych elementów JS - wyjątków:
[JAVASCRIPT] pobierz, plaintext
  1. try {
  2. document.getElementById(jaka).style.display = 'none';
  3. } catch (e) {
  4. // jakas reakcja na błąd
  5. }
[JAVASCRIPT] pobierz, plaintext
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.