Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript] Problem z ładowanie funkcji i identyfikacji elementu po id
Forum PHP.pl > Forum > Przedszkole
bonio89
Cześć,
Mam problem z banalną funcją w JS do zmiany stylu wyświetlania obiektu:

kawałek strony:
  1. <table width="620" border="1">
  2. <tr>
  3. <td width="50" class="et_heads">ID</td>
  4. <td class="et_heads" width="160">PRODUCENT</td>
  5. <td class="et_heads" width="250">MODEL</td>
  6. <td class="et_heads" width="100" style="text-align:center">STAN <span style="font-size:10px"> (dostępne/wszystkie)</span></td>
  7. <td width="100" class="et_heads">REZERWUJ</td>
  8. </tr>
  9. {section name=id loop=$ile start=0 step=1}
  10. <tr>
  11. <td onClick="showMore(magazyny_{$smarty.section.id.index+1})">{$smarty.section.id.index+1}</td>
  12. <td onClick="showMore(magazyny_{$smarty.section.id.index+1})">{$magazyn[id]['producent']}</td>
  13. <td onClick="showMore(magazyny_{$smarty.section.id.index+1})">{$magazyn[id]['model']}</td>
  14. <td style="text-align:center">{$magazyn[id]['dostepne']} / {$magazyn[id]['wszystkie']}</td>
  15. <td style="text-align:center">{if $magazyn[id]['stan']}<a href="index.php?page=stan&action=rezerwuj&what={$maszyna[id]['id']}">rezerwuj</a>{else}rezerwuj{/if}</td>
  16. </tr>
  17. <tr id="magazyny_{$smarty.section.id.index+1}" style="display:none">
  18. <td colspan="5" style="background-color:#ACEAF4">
  19. <table width="624" class="magTabMore">
  20. <tr>
  21. <td colspan="2">Dostępne {$magazyn[id]['dostepne']} z {$magazyn[id]['wszystkie']}<br /><br /></td>
  22. </tr>
  23. <tr>
  24. <td align="left">Magazyny:</td>
  25. <td align="left"> Rezerwacje:</td>
  26. </tr>
  27. <tr>
  28. <td align="left" valign="top">
  29. <ul>
  30. {foreach from=$magazyn[id]['stany'] item=v}
  31. {if $v['ilosc'] != '0'}<li>{$v['nazwa']}: {$v['ilosc']} szt.</li>{/if}
  32. {/foreach}
  33. </ul>
  34. </td>
  35. <td align="left" valign="top"> <ul>
  36. {foreach from=$magazyn[id]['rezerwacje'] item=v}
  37. <li>{$v['login']} - do {$v['data_koniec_rezerwacji']}</li>
  38. {/foreach}
  39. </ul></td>
  40. </tr>
  41. </td>
  42. </tr>
  43. {/section}
  44. </div>

scripts.js, ładowany w sekcji head.
  1. // JavaScript Document
  2. function showMore(what){
  3. //alert ('f str');
  4. if (document.getElementById(what).style.display=='none'){
  5. //alert ('try block');
  6. document.getElementById(what).style.display='block';
  7. }
  8. else{
  9. //alert ('try none');
  10. document.getElementById(what).style.display='none';
  11. }
  12. }


Generalnie w tabeli w wierszu 1 chcę zmienić styl wyświetlania wiersza 2 w zdarzeniu onclick z użyciem funkcji js.
  1. <td onClick="showMoremagazyny_{$smarty.section.id.index+1})">{$magazyn[id]['model']}</td>

zmienia
  1. <tr id="magazyny_{$smarty.section.id.index+1}" style="display:none">


{$smarty.section.id.index+1} przyjmuje wartość 1,2,3...

Błąd w konsoli to: Uncaught TypeError: Cannot read property 'style' of null
Gdy dam w scripts.js window.onload =function showMore(what){ to konsola wypluwa: Uncaught ReferenceError: showMore is not defined
bonio89
jak dam skrypt na koniec to lub załączę domready to dalej to samo (Uncaught ReferenceError: showMore is not defined).

Ograniczyłem kod do przykładu:

  1. <!doctype html>
  2. <script type="text/javascript">
  3. // JavaScript Document
  4. function showMore(what){
  5. //alert ('f str');
  6. if (document.getElementById(what).style.display=='none'){
  7. //alert ('try block');
  8. document.getElementById(what).style.display='block';
  9. }
  10. else{
  11. //alert ('try none');
  12. document.getElementById(what).style.display='none';
  13. }
  14. }
  15.  
  16. <meta charset="utf-8">
  17. <title>Dokument bez tytułu</title>
  18. </head>
  19.  
  20. <tr><td onClick="showMore(aa)">bbbbbbbbbbbbbbb</td></tr>
  21. <tr><td id="aa">aaaaaaaaaaaaa</td></tr>
  22. </body>
  23.  
  24. </html>


nospor
Nie: showMore(aa)
a: showMore('aa')
bonio89
Dzięki nospor, niech Bóg Ci w dzieciach wynagrodzi.
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.