Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> table.innerHTML i IE
ActivePlayer
post
Post #1





Grupa: Przyjaciele php.pl
Postów: 1 224
Pomógł: 40
Dołączył: 6.07.2004
Skąd: Wuppertal

Ostrzeżenie: (0%)
-----


js onclick na jakimstam linku:
Kod
var tabelka = document.getElementById('plan');
//...
tabelka.innerHTML = tabelka.innerHTML + do_dodania;  // w tym miejscu IE sie wysypuje
// do_dodania jest stringiem i zawiera dobre dane

  1. <table id="plan">
  2. ...


pod ff smiga. pod IE nie bardzo sad.gif
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
revyag
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 2 258
Pomógł: 16
Dołączył: 21.09.2004
Skąd: Kielce

Ostrzeżenie: (0%)
-----


Nie śmiga bo treść tabeli to tbody:) Wystarczy że zrobisz tak:
  1. <tbody id="plan"></tbody>


--------------------
-------------

------
Go to the top of the page
+Quote Post
dr_bonzo
post
Post #3





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

Ostrzeżenie: (0%)
-----


@AP: a do tabeli wrzucasz caly HTML (<tr><td>....</td>... itd)?


--------------------
Nie lubię jednorożców.
Go to the top of the page
+Quote Post
bregovic
post
Post #4





Grupa: Zarejestrowani
Postów: 562
Pomógł: 15
Dołączył: 8.08.2003
Skąd: Denmark/Odense

Ostrzeżenie: (0%)
-----


Teoretycznie używanie innerHTML w ten sposób to błąd. Aby było to poprawne użycie DOM powinieneś stworzyć nowe gałęzie i dodać je do table.

Coś w stylu:
Kod
div = document.createElement("div");
preface = document.getElementById("preface");
document.insertBefore(div, preface);

Ale to może być moja pedantyczność.

Parę linków:
http://developer.mozilla.org/en/docs/DOM
http://developer.mozilla.org/en/docs/Gecko_DOM_Reference

Ten post edytował bregovic 7.11.2005, 15:55:06


--------------------
Prank - for the fun. Mac - for the simplicity. Deviantart - for the kick.
Life is ours, We live it our way -- Metallica
Go to the top of the page
+Quote Post
FiDO
post
Post #5





Grupa: Przyjaciele php.pl
Postów: 1 717
Pomógł: 0
Dołączył: 12.06.2002
Skąd: Wolsztyn..... Studia: Zielona Góra

Ostrzeżenie: (0%)
-----


Sa specjalne metody do operacji na tabelach.
Jako przyklad moge pokazac kawalek wyciety z kontekstu:
Kod
// fields - tablica zawartosci dodawanych komorek
// pos - pozycja na ktorej dodajemy wiersz (domyslnie na koncu tabeli)
this.insertRow = function (fields, pos) {
    body = this.table.tBodies[0];
    var row = body.insertRow( (typeof pos == 'number') ? pos : body.rows.length );
    for (var i = 0; i < fields.length; i++) {
        row.insertCell(i).innerHTML = fields[i];
    }
    // [...]
    return row;
}


--------------------
Brak czasu :/
Go to the top of the page
+Quote Post
ActivePlayer
post
Post #6





Grupa: Przyjaciele php.pl
Postów: 1 224
Pomógł: 40
Dołączył: 6.07.2004
Skąd: Wuppertal

Ostrzeżenie: (0%)
-----


Cytat(revyag @ 2005-11-07 10:26:15)
Nie śmiga bo treść tabeli to tbody:) Wystarczy że zrobisz tak:
  1. <tbody id="plan"></tbody>

Własnie tak tez nie działało. przerobilem juz na divy bo z tymi tabelkami to wiecej problemow niż korzyści.
Go to the top of the page
+Quote Post
wiki_nosi
post
Post #7





Grupa: Zarejestrowani
Postów: 1
Pomógł: 0
Dołączył: 27.11.2009

Ostrzeżenie: (0%)
-----


Odświeżam starego kotleta.
Miałem właśnie podobny przypadek i nie za bardzo mogłem znaleźć odpowiedź w necie.
Tutaj dyskusja podążała w najlepszym kierunku, rozwiązanie

zamiast
  1. <table id="plan">
  2. ...


robimy
  1. <table><tr><td><div id="plan"><div id="plan_1">
  2. </div></div></td></tr></table>


a kod

Kod
var tabelka = document.getElementById('plan');
//...
tabelka.innerHTML = tabelka.innerHTML + do_dodania;  // w tym miejscu IE sie wysypuje
// do_dodania jest stringiem i zawiera dobre dane


przerabiamy na

Kod
var divek = document.getElementById('plan' + PLAN_LP); // zmienna PLAN_LP jest zmienną globalną ustawioną na starcie PLAN_LP = 1
        
var ll_lp_div = PLAN_LP + 1;
//...

var ls_table = '<table>' + do_dodania + '</table>' + '<div id="plan_' + ll_lp_div + '"></div>';
        
PLAN_LP++;
divek .innerHTML = ls_table;


przypomnę że zmienna do_dodania złożona jest ze stringa typu <TR><TD>fasf</td><td>asfas</td>.....</tr>


IE nie potrafi za pomocą innerHTML obiektu TABLE zmieniać body tabeli.

powyższy przykład działa na wszystkich przeglądarkach

Ave IE
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 05:38