Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Tabela, wiersz po wierszu - innerHTML
Forum PHP.pl > Forum > XML, AJAX
Malinaa
Witam,

mam taką pętle:

[js]
for(i=0;i<response.result.length;i++) {
var div = document.createElement('div');
div.style.display = 'block';

div.innerHTML = '<table width="100%" cellspacing="1" cellpadding="0" border="0"><tr><td align="left" valign="middle" width="20">'+response.result[i].message+'</td></tr></table>';

document.getElementById('sb_Log').appendChild(div);
}
[/js]

a chciałbym mieć tak:

[js]
var div = document.createElement('div');
div.style.display = 'block';

div.innerHTML = '<table width="100%" cellspacing="1" cellpadding="0" border="0">'; // Not ok

for(i=0;i<response.result.length;i++) {
div.innerHTML = '<tr><td align="left" valign="middle" width="20">'+response.result[i].message+'</td></tr>';

document.getElementById('sb_Log').appendChild(div); // Co z tym ? ? ?
}

div.innerHTML = '</table>'; // Not ok
[/js]

Jak to zrobić, aby działało prawidłowo, tworzyło div.innerHTML krok po kroku, wiersz za wierszem, a nie jak jest teraz całe tabele?
kamil4u
div.innerHTML += 'to co dodane';
czyli:
Kod
div.innerHTML = '<table width="100%" cellspacing="1" cellpadding="0" border="0">';

for(i=0;i<response.result.length;i++)
  div.innerHTML += '<tr><td align="left" valign="middle" width="20">'+response.result[i].message+'</td></tr>';

div.innerHTML += '</table>'; // Not ok
document.getElementById('sb_Log').appendChild(div);
Malinaa
Próbowałem w ten sposób, ale nie wiem dlaczego w tym przypadku jakby nie były widziany kod html.
Wyświetla wszystko w jednym ciągu znaków, bez sytli css i wierszy, jedna ciągła linia?
kamil4u
Nie rozumiem... opisz dokładniej, pokaż kod i wynik jaki dostałeś i jaki chcesz dostać .
Malinaa
Oto cały kod:

  1. var div = document.createElement('div');
  2. div.style.display = 'block';
  3. div.innerHTML = '<table width="100%" cellspacing="1" cellpadding="0" border="0">';
  4.  
  5. for(i=0;i<response.result.length;i++) {
  6. // Tlo kolumny wiersza
  7. if (i%2 != 0) {
  8. clas = 'tdWierszOne2';
  9. }
  10. else {
  11. clas = 'tdWierszOne1';
  12. }
  13. div.innerHTML += '<tr><td align="left" valign="middle" width="20" class="'+clas+'"><img src="'+usr+'" alt="IP: '+response.result[i].ip+', data: '+response.result[i].date+'" title="IP: '+response.result[i].ip+', data: '+response.result[i].date+'"></td><td align="left" class="'+clas+'"><a href="#" class="linkZwykly5" title="Profil: '+response.result[i].author+'"><b>'+response.result[i].author+':&nbsp;</b></a>&nbsp;'+response.result[i].message+'</td></tr>';
  14. }
  15. div.innerHTML += '</table>';
  16. if (response.sesja == '') {
  17. document.getElementById('sb_chatLogout').appendChild(div);
  18. }
  19. else {
  20. document.getElementById('sb_chatLog').appendChild(div);
  21. }


Przy Twoich wskazaniach wygląda tak:

[ img ]

W moim wykonaniu narazie jest tak:

[ img ]

Do końca tygodnia chcę ukończyć shoutboxa, a pierwszy raz robię coś w ajax js, będę wdzięczny za pomoc.

Chciałbym pozbyć się wierszy tabel, które generuje skrypt i mieć jedną tabele i wiele wierszy w tej jednej tabeli.
kamil4u
Powinno działać - zobacz co masz w firebug-u i w którym miejscu nie działa skrypt. IMO Powinieneś mieć poprawną formę/strukturę HTML i to by rozwiązało wszelkie problemy:
Kod
<ul id="southbox">
   <li>
      <div>
         <cite>Autor</cite>
         <span>Data</span>
      </div>
      <blockquote>
         <p>Treść wiadomości</p>
      </blockquote>
   </li>
</ul>
, a wszystkie elementy tworzyć za pomoc odpowiednich metod do tworzeni DOM: document.createElement, element.setAttribute, element.appendChild, element.createTextNode
Miałem kiedyś w 'miarę podobny' problem: http://forum.webhelp.pl/viewtopic.php?t=20...p;view=previous
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.