Slet raekker og kolloner i wysiwyg
Jeg vil gerne have 4 funktioner der ved kald kan indsætte og slette rækker og kolloner i en wysiwyg editor.Jeg er ikke så habil til javascript, men jeg har tilegnet mig noget kode der fungerer ved hjælp af en switch sætning.
Kan dette ikke laves om således at det bare bliver 4 funktioner jeg så kalder med en knap?
//// DELETE ROW
case 'delRow' :
switch(selRangeDo.tagName) {
case 'TR' :
rowIndex = selRangeDo.rowIndex;
parentTable = selRangeDo.parentElement.parentElement;
parentTable.deleteRow(rowIndex);
break;
case 'TD' :
cellIndex = selRangeDo.cellIndex;
parentRow = selRangeDo.parentElement;
rowIndex = parentRow.rowIndex;
parentTable = selRangeDo.parentElement.parentElement.parentElement;
parentTable.deleteRow(rowIndex);
break;
}
break;
///// DELETE COLUMN
case 'delCol' :
switch(selRangeDo.tagName) {
case 'TD' :
cellIndex = selRangeDo.cellIndex;
rowIndex = selRangeDo.parentElement.rowIndex;
parentTable = selRangeDo.parentElement.parentElement.parentElement;
newTable = parentTable.cloneNode(true);
for(var x=0; x<newTable.rows.length; x++) {
newTable.rows[x].deleteCell(cellIndex);
}
parentTable.removeNode(true);
selRange.pasteHTML(newTable.outerHTML);
/*
if(parentTable.hasChildNodes) {
alert('table columns deleted!');
parentTable.removeNode(true);
}*/
break;
}
////// INSERT ROW
break;
case 'insRow' :
switch(selRangeDo.tagName) {
case 'TABLE' :
parentElement = selRangeDo;
newTable = selRangeDo.cloneNode(true);
newRow = newTable.insertRow();
for(var x=0; x<newTable.rows[0].cells.length; x++) {
var newCell = newRow.insertCell();
}
parentTable.removeNode(true);
selRange.pasteHTML(newTable.outerHTML);
break;
case 'TBODY' :
parentTable = selRangeDo.parentElement;
newTable = selRangeDo.cloneNode(true);
newRow = newTable.insertRow();
for(var x=0; x<newTable.rows[0].cells.length; x++) {
newCell = newRow.insertCell();
}
parentTable.removeNode(true);
selRange.pasteHTML(newTable.outerHTML);
break;
case 'TR' :
rowIndex = selRangeDo.rowIndex;
parentTable = selRangeDo.parentElement.parentElement;
newTable = parentTable.cloneNode(true);
newRow = newTable.insertRow(rowIndex+1);
for(var x=0; x<newTable.rows[0].cells.length; x++) {
newCell = newRow.insertCell();
}
parentTable.removeNode(true);
selRange.pasteHTML(newTable.outerHTML);
break;
case 'TD' :
parentRow = selRangeDo.parentElement;
rowIndex = parentRow.rowIndex;
cellIndex = selRangeDo.cellIndex;
parentTable = selRangeDo.parentElement.parentElement.parentElement;
newTable = parentTable.cloneNode(true);
newRow = newTable.insertRow(rowIndex+1);
for(var x=0; x<newTable.rows[0].cells.length; x++){
newCell = newRow.insertCell();
}
parentTable.removeNode(true);
alert("ins row new");
selRange.pasteHTML(newTable.outerHTML);
break;
}
break;
////// INSERT COLUMN
case 'insCol' :
switch(selRangeDo.tagName) {
case 'TABLE' :
newTable = selRangeDo.cloneNode(true);
for(var x=0; x<newTable.rows.length;x++) {
newCell = newTable.rows[x].insertCell();
}
newCell.focus();
selRangeDo.outerHTML = newTable.outerHTML;
break;
case 'TBODY' :
newTable = selRangeDo.cloneNode(true);
for(var x=0; x<newTable.rows.length;x++) {
newCell = newTable.rows[x].insertCell();
}
newCell.focus();
selRangeDo.outerHTML = newTable.outerHTML;
break;
case 'TR' :
newTable = selRangeDo.parentElement.parentElement;
newTable = newTable.cloneNode(true);
for(var x=0; x<newTable.rows.length;x++) {
newCell = newTable.rows[x].insertCell();
}
newCell.focus();
selRangeDo.outerHTML = newTable.outerHTML;
break;
case 'TD' :
cellIndex = selRangeDo.cellIndex;
rowIndex = selRangeDo.parentElement.rowIndex;
parentTable = selRangeDo.parentElement.parentElement.parentElement;
newTable = parentTable.cloneNode(true);
for(x=0; x<newTable.rows.length; x++) {
newCell = newTable.rows[x].insertCell(cellIndex+1);
}
parentTable.outerHTML = newTable.outerHTML;
break;
}
break;
}
}
