Alexander (HH): Button reagiert nicht auf onclick im IE

Beitrag lesen

Moin Moin!

// "Save" Button wegnehmen:
  var saveBtn = document.getElementById("Save");
  var form = document.getElementById("f");
  form.removeChild(saveBtn);

Das wird nur funktionieren, wenn der Button ein direktes Kind des Formulars ist.

saveBtn.parentNode.removeChild(saveBtn);

funktioniert auch, wenn das nicht der Fall ist.

// "Text ändern" Button anlegen und zeigen:
  var btn = document.createElement("button");
  var id = document.createAttribute("id");

createAttribute() ist mit dem IE problematisch, steht schon in SelfHTML.

id.nodeValue = "ChangeText";
  btn.setAttributeNode(id);

btn["id"]="ChangeText";

oder

btn.id="ChangeText";

sollte immer funktionieren.

var click = document.createAttribute("onclick");
  click.nodeValue = "changeText()";
  btn.setAttributeNode(click);

Prinzipiell hier nochmal, allerdings kannst Du die Funktionsreferenz direkt zuweisen:

btn["onclick"]=changeText; // keine Klammern!

oder

btn.onclick=changeText; // keine Klammern!

ggf. mußt Du changeText vor diese Funktion ziehen, damit Javascript die Funktion an dieser Stelle schon kennt.

btn.appendChild(document.createTextNode("Text ändern"));
  form.appendChild(btn);
}

function changeText() {

// textarea anlegen und statt Text anzeigen:
  var txt = document.createElement("textarea");
  var name = document.createAttribute("name");
  var id = document.createAttribute("id");
  var cols = document.createAttribute("cols");
  var rows = document.createAttribute("rows");
  name.nodeValue = "txt";
  id.nodeValue = "txt";
  cols.nodeValue = "50";
  rows.nodeValue = "8";
  txt.setAttributeNode(name);
  txt.setAttributeNode(id);
  txt.setAttributeNode(cols);
  txt.setAttributeNode(rows);

Noch ein paar Mal das IE-Problem:

txt.name="txt";
  txt.id="txt";
  txt.cols=50;
  txt.rows=8;

txt.value = document.getElementById("textBlock").firstChild.nodeValue;
        document.getElementById("textBlock").replaceChild(txt,document.getElementById("textBlock").firstChild);

// "Save" Button anlegen und zeigen:
  var btn = document.createElement("button");
  id = document.createAttribute("id");
  id.nodeValue = "Save";

Und wieder ...

btn.setAttributeNode(id);
  var click = document.createAttribute("onclick");
  click.nodeValue = "writeText()";
  btn.setAttributeNode(click);

Und wieder ...

btn.appendChild(document.createTextNode("Änderung übernehmen"));
  document.getElementById("f").appendChild(btn);

// "Text ändern" Button wegnehmen
  var changeBtn= document.getElementById("ChangeText");
  var form = document.getElementById("f");
  form.removeChild(changeBtn);

Und hier nochmal das Parent-Spiel von ganz oben:

changeBtn.parentNode.removeChild(changeBtn);

}

Alexander