Autor | Zpráva | ||
---|---|---|---|
srigi Profil |
#1 · Zasláno: 30. 8. 2008, 14:37:43 · Upravil/a: srigi
Na web som umiestnil pokusne demo. Jedna sa o formular, do ktoreho je mozne dynamicky pridavat riadky. Vyrobok, ku kazdemu vyrobku potom prisluchaju patricne slave riadky, do ktorych sa bude zapisovat S/N.
Po kliknuti napr. na ks+ sa vykona cca tento kod HTML <table id="master_1"> <tr class="master"> <td class="datazz"><input type="text" name="master_1" /></td> <td class="ctrl"><a href="#" onclick="add_slave(1); return false;">ks+</a></td> </tr> <tr class="slave"> <td class="datazz"><input type="text" name="slave_1[]" /></td> <td class="void"></td> </tr> </table> df_functions.js function add_slave(master_num){ var parrent = document.getElementById('master_' + master_num); // <tr> var row_slave = document.createElement('tr'); row_slave.setAttribute('class', 'slave'); // <tr><td> var field_datazz = document.createElement('td'); field_datazz.setAttribute('class', 'datazz'); // <tr><td> // <td> var field_void = document.createElement('td'); field_void.setAttribute('class', 'void'); // <tr><td><input> // <td> var input = document.createElement('input'); input.setAttribute('type', 'text'); input.setAttribute('name', 'slave_' + master_num + '[]'); // join elements field_datazz.appendChild(input); row_slave.appendChild(field_datazz); row_slave.appendChild(field_void); parrent.appendChild(row_slave); } V podstate sa do tabulky vygeneguje novy riadok <tr class="slave"> aj s obsahom. Nemate niekto tusenia preco sa v IE6/7 nic nevykona (aspon teda u mna doma - Vista SP1, UAC on)? V Opere a FF (2.0, 3.0) funguje vsetko OK. |
||
srigi Profil |
#2 · Zasláno: 30. 8. 2008, 15:35:56
O.K. vyriesene. Prvky treba pridavat do obalu <tbody>.
PLS lock. |
||
Chamurappi Profil |
#3 · Zasláno: 30. 8. 2008, 15:42:51 · Upravil/a: Chamurappi
Reaguji na srigiho:
Explorer nedovoluje přidat řádek přímo do <table>, musí být uvnitř <tbody>. Takže si postupem nastíněným zde vyber první <tbody> dotyčné tabulky a přidej <tr> do něj. V HTML (na rozdíl od XHTML) platí, že <tbody> je v tabulce vždy. Podobně jako u elementů <html>, <head> a <body> se jeho počáteční a ukončovací značky odvozují z kontextu, takže není nutné je psát a zrovna u <tbody> je nepíše skoro nikdo. Máš tedy ve své tabulce <tbody>, i když neuvádíš jeho značky. Až rozběhneš přidávání řádků, nebude ti ještě v Exploreru fungovat nastavování atributu „class“. Respektive atribut nastavíš (lze jej přečíst metodou „getAttribute“), ale nebude nijak účinkovat, protože parser Exploreru kouká na třídy v atributu jen při načítání HTML kódu. Používej raději normální HTML DOM místo všech těch „setAttribute“, tedy: var input = document.createElement('input'); input.type = 'text'; // ten dokonce můžeš vynechat, protože „text“ je výchozí hodnota input.className = 'slave_' + master_num + '[]'; // atd. |
||
srigi Profil |
#4 · Zasláno: 30. 8. 2008, 15:56:01
Chamurappi
OK, velka vdaka, hlavne za posledne riadky. |
||
Časová prodleva: 16 let
|
0