AncientRites
Legacy Member
Ik zit met een dynamische tabel die wanneer men op een knopje drukt een extra row moet genereren. Deze row wordt gebaseerd op de velden binnen de eerste, reeds bestaande row.
Voorbeeld:
Kolom 1 / Kolom 2
Textbox1 / Selectbox1
Wanneer je op Add Row klikt, wordt er een nieuwe rijd aangemaakt die als inhoud textbox2 en selectbox2 krijgt (in mijn praktijksituatie zit het wel iets ingewikkelder in elkaar maar dit is de basis).
Ik ga nu als volgt te werk:
Principe is dus:
Tekstveld1 wordt gekopieerd naar variabele
Tekstveld1 krijgt naam 'Buffer'
Variabele wordt in nieuwe cel geplaatst, met naam Tekstveld1
Variabele krijgt nieuwe naam Tekstveld2
'Buffer' krijgt oude naam Tekstveld1 terug
Dit alles werkt perfect in FireFox en Opera, maar IE doet moeilijk. Ik vermoed dat bij het kopieren van de innerHTML deze HTML nog niet wordt gebruikt voor de rest van het script?
Alle hulp is welkom.
Voorbeeld:
Kolom 1 / Kolom 2
Textbox1 / Selectbox1
Wanneer je op Add Row klikt, wordt er een nieuwe rijd aangemaakt die als inhoud textbox2 en selectbox2 krijgt (in mijn praktijksituatie zit het wel iets ingewikkelder in elkaar maar dit is de basis).
Ik ga nu als volgt te werk:
PHP:
function addRowToTable(id)
{
var tbl = document.getElementById('tbl'+id); //de huidige tabel
var lastRow = tbl.rows.length; //aantal rijen
var iteration = lastRow;
var row = tbl.insertRow(lastRow); //rij inserten na laatste rij
var numCol = tbl.rows[0].cells.length; //aantal kolommen
var frm = document.Product; //formulier Producten
for (i = 0; i < numCol; i++) {
var col = i + 1; //huidige kolom
var cellId = 'td' + id + '-' + col + '-' + 1; //Naam van kolom i in rij 1
var cell = row.insertCell(i); //cel aanmaken
var bufferId = 'strTableContent'+ id + '-' + col + '-' + 1; //Naam van element binnen cellId
var bufferedName = 'buffer'; //Naam die gebruikt wordt om naam tijdelijk een andere naam te geven, als tussenstap
//inhoud eerste cel kopieren naar variabele voor later gebruik
var bufferHTML = document.getElementById(cellId).innerHTML;
//Naam van element (tekstbox of listbox) eerste rij, kolom i, vervangen naar 'buffer'
$(frm[bufferId]).setAttribute('name', bufferedName);
//bufferHTML (gehele inhoud van eerste cel) kopieren naar de nieuwe cel in nieuwe rij
cell.innerHTML = bufferHTML;
//De naam van het gekopieerde element zijn nieuwe waarde geven
$(frm[bufferId]).setAttribute('name', 'strTableContent'+ id + '-' + col + '-' + lastRow);
//De naam van het oude element (buffer) zijn oude waarde teruggeven
$(frm[bufferedName]).setAttribute('name', bufferId);
}
//totaal aantal rijen verhogen met 1
$('numrowstbl' + id).value++;
}
Principe is dus:
Tekstveld1 wordt gekopieerd naar variabele
Tekstveld1 krijgt naam 'Buffer'
Variabele wordt in nieuwe cel geplaatst, met naam Tekstveld1
Variabele krijgt nieuwe naam Tekstveld2
'Buffer' krijgt oude naam Tekstveld1 terug
Dit alles werkt perfect in FireFox en Opera, maar IE doet moeilijk. Ik vermoed dat bij het kopieren van de innerHTML deze HTML nog niet wordt gebruikt voor de rest van het script?
Alle hulp is welkom.