Jag har gjort en jätteenkel WYSIWYG editor som använder sig av en div med "contenteditable=true" och MS kommandon "commandExec" för att få formatering på texten.
Nu undrar jag om det finns nåt bra sätt för att kunna infoga en tabell utan ram i sin div för att använda i editorn?
Jag har sett det på andra editorer, men vet inte hur dom lyckats...
function insertTable (parent, rows, cols) {
var table = document.createElement ("TABLE");
var tbody = document.createElement ("TBODY");
var tr = [], td = [];
for (var i = 0; i < rows; i++) {
tr[i] = document.createElement ("TR");
td[i] = [];
for (var j = 0; j < cols; j++) {
td[i][j] = document.createElement ("TD");
td[i][j].innerHTML = i + ":" + j;
tr[i].appendChild (td[i][j]);
}
tbody.appendChild (tr[i]);
}
table.appendChild (tbody);
parent.appendChild (table);
}
parent är en referens till det element du vill ha tabell i, i ditt fall diven med attributet editableContent = true, rows är antal rader i tabellen och cols är antal kolumner i varje rad. Tabellens border kan du ändra med css, t.ex.:
td*[j].innerHTML = i + ":" + j; var förresten något jag slängde in för att se så att det funkade, så det kan du ta bort. Om du skickar med "test1" som argument så skickar du inte en referens till diven, vilket du gör om du skriver skickar med test1 utan fnuttar (i alla fall i IE vad jag vet). Hur som helst så ska du byta ut "test1" i din kod mot document.getElementById("test1") ta bort td*[j].innerHTML = i + ":" + j; så funkar det, men tänk på att tabellen inte syns alls då eftersom det inte finns någon border.**
border: 1px dashed #ccc; fixar du bordern med. När man senare använder det som är skapat med din wysiwyg-sida så är det bara att ha en anna stil. <input type="button" value="test1" onclick="insertTable(document.getElementById('test1'),2,2);"/> skriver du så blir det rätt. Angående frågan där du undrar vad det är för skillnad på att använda document.createElement eller att bara använda innerHTML så är det ju såklart ingen. Det är väl en smaksak hur man väljer att göra. Personligen gillar jag att tänka mig elementen som objekt och tycker därför att det blir lättare och snyggare i koden om man gör som jag gjorde i mitt exempel.