DOMで要素を消去したり置き換えたりする方法も見つかった。idか何かで参照して、直接消去するような方法は、確かに無い(見つからない)のだけど。ULの子要素(LI)の参照に関してIEとMozillaで判別せずに済む方法も分かった。childNodes
ではなく、getElementsByTagName('LI')
でNodeListを参照。後者は、documentオブジェクトだけのメソッドだと勘違いしていた。これでやれそうなことの幅がかなり広がった気がする。
function replaceElement(text){
var d = document;
var parent = d.getElementById('testUL');
var refchild = parent.getElementsByTagName('LI').item(0);
var newchild = d.createElement('LI');
parent.replaceChild(newchild, refchild);
var nText = d.createTextNode(text);
newchild.insertBefore(nText, null); //または appendChild(nText);
}replaceElement('c');
あとはイベント関係。例えばonclick属性を持たない要素に、DOMでonclick属性をつけてやってもIEでイベントが発生しないという件。要素ごと生成するなら、innerHTMLメソッドで何とかなるものの、既に存在する要素の場合面倒なことになるし、innerHTMLは独自拡張ということで早く忘れてしまいたいというのもある。
取り敢えずHTML EditorはMozilla専用にしてみる。(見通しが立ったので)セクションだけではなく、DOCTYPE宣言から何から、全部生成するHTML Editorを作ることにした。User-Javascriptを併用すれば、テキストエディタを起動せずにHTMLの編集ができそう。テキストエディタは保存する時だけ使用。DOM Level2をサポートしてるというのは、かなり強力(Mozilla)。
document.implementation.hasFeature('HTML','2.0')
なんというか、掲示板に投稿するような気軽な感覚でHTMLを書きたいというのがあって、そりゃあCGIでやった方が良いに決まっているのだけれど、そのためだけに勉強するというのは素人には無意味だから。リロードを必要としないというのもかなりの魅力だし。
CSS EditorもIE対策でソースが自分でも見たくなくなるくらい酷いものになってしまった。手を加える気にならない。こちらはN6専用に変更。そもそもIEで表示確認を取るCSSエディタなんて、害悪そのものだった。