Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [HTML][JavaScript] Prosty Problem DOM
Forum PHP.pl > Forum > Przedszkole
frytek92
Witam ostatnio postanowiłem douczyć sie javascript-u w czystej postaci, mam taki kod niby wszystko działa ale w momencie kiedy klikam "Usuń Element" zostaje wyświetlone "Element został usunięty" i nic sie z elementami nie dzieje w przypadku kiedy drugi raz nacisnę dopiero element zostaje usunięty, kiedy umieszczę w funkcji list.removeChild(list.lastChild); 2 razy dopiero wtedy widać że element został usunięty ale myślę ze da się to jakoś obejść bo to w miarę nie profesjonalne.

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2.  
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4.  
  5.  
  6. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2" />
  7.  
  8. <title>JavaScript - Przykłady</title>
  9.  
  10. <script type="text/javascript">
  11.  
  12. function removeItem() {
  13.  
  14. var list = document.getElementById("list");
  15.  
  16. var status = document.getElementById("status_01");
  17.  
  18. if(list.childNodes.length > 0){
  19.  
  20. list.removeChild(list.lastChild);
  21.  
  22. status.innerHTML = "Element został usunięty";
  23.  
  24. } else { status.innerHTML = "Brak elementów"; }
  25.  
  26. }
  27.  
  28.  
  29. </head>
  30.  
  31.  
  32. <p id="status_01">Brak Akcji</p>
  33.  
  34. <ol id="list">
  35.  
  36. <li>Element Listy</li>
  37.  
  38. <li>Element Listy</li>
  39.  
  40. <li>Element Listy</li>
  41.  
  42. <li>Element Listy</li>
  43.  
  44. <li>Element Listy</li>
  45.  
  46. </ol>
  47.  
  48. <input type="button" onclick="removeItem();" value="Usuń" />
  49.  
  50. </body>
  51.  
  52. </html>
kamil4u
Twój kod nie działa z powodu...:
http://kurs.browsehappy.pl/Definicja/DOM
http://kurs.browsehappy.pl/JavaScript/DOM (<--tu rozwiązanie)

W razie czego daj alert-a na list.lastChild i zobacz, że nie masz tam tylko elementów smile.gif

Tu działający kod( mogłem trochę namieszać(szczególnie z pętlą for, ale myślę, że powinieneś sobie poradzić)).
Kod
<script type="text/javascript">


function removeItem() {
    var list = document.getElementById("list");
    var status = document.getElementById("status_01");
    
        for(var i=list.childNodes.length; el=list.childNodes[--i];){
         if(el.nodeType == 1) break;
         else if(i==0) status.innerHTML = "Brak elementów";
        }

        list.removeChild(el);
        status.innerHTML = "Element został usunięty";

}
</script>

</head>

<body>

<p id="status_01">Brak Akcji</p>

<ol id="list">

<li>Element Listy</li>

<li>Element Listy</li>

<li>Element Listy</li>

<li>Element Listy</li>
<li>Element Listy</li>
</ol>

<input type="button" onclick="removeItem();" value="Usuń" />

</body>

</html>
zegarek84
lub zamiast poprawiać kod JS wystarczy poprawić kod HTML:
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2" />
  4. <title>JavaScript - Przykłady</title>
  5. <script type="text/javascript">
  6. function removeItem() {
  7. var list = document.getElementById("list");
  8. var status = document.getElementById("status_01");
  9. if(list.childNodes.length > 0){
  10. list.removeChild(list.lastChild);
  11. status.innerHTML = "Element został usunięty";
  12. } else { status.innerHTML = "Brak elementów"; }
  13. }
  14. </head>
  15. <p id="status_01">Brak Akcji</p>
  16. <ol id="list"><li>Element Listy</li><li>Element Listy</li><li>Element Listy</li><li>Element Listy</li><li>Element Listy</li></ol>
  17. <input type="button" onclick="removeItem();" value="Usuń" />
  18. </body>
  19. </html>
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.