Autor Zpráva
srigi
Profil
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
O.K. vyriesene. Prvky treba pridavat do obalu <tbody>.
PLS lock.
Chamurappi
Profil
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
Chamurappi
OK, velka vdaka, hlavne za posledne riadky.

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0