MudGuard: onclick registriert nur erstes Klicken

Beitrag lesen

Hi,

var arr = document.getElementsByName('spoiler');     // Array mit sämtlichen Elementen, die den Namen "spoiler" haben

Dürfen die betroffenen Elemente überhaupt ein name-Attribut haben?

for (var i = 0; i < arr.length; i++) {

[...]

node.setAttribute("id", i);

i ist eine Zahl. Eine Zahl kann kein gültiger Wert für eine id sein.
Außerdem: verwende node.id = ..., sonst zickt der IE.

node.setAttribute("onclick", "showSpoiler('" + i + "')");

Das wird im IE nicht funktionieren, weise node.onclick eine passende Funktion zu.

att = document.createAttribute("id");

att.nodeValue = i;

Eine Zahl kann immer noch kein gültiger Wert für eine id sein.
Abgesehen davon: dieselbe ungültige Id hast Du schon für ein anderes Element verwendet, siehe oben. Id-Werte müssen dokumentweit eindeutig sein.

node.setAttributeNode(att);                               // setze id jedes Elements auf seinen Platz im Array,

Auch hier: node.id = ...

att = document.createAttribute("onClick");

s.o.

att.nodeValue = "myclick('"+i+"')";
      node.setAttributeNode(att);

s.o.

function showSpoiler(id) {
   alert('showSpoiler('+i+')');

i? oder doch id?

var el = document.getElementById(id);

Da Deine ungültigen ids nicht eindeutig sind, ist ein Erfolg dieses Aufrufs fraglich.

var text = document.createTextNode(spoiler[id]);     // und ersetze es durch den im Array gespeicherten ursprünglichen Text
   el.appendChild(text);
   node.setAttribute("onclick", "hideSpoiler('"+id+"')");

s.o.

cu,
Andreas

--
Warum nennt sich Andreas hier MudGuard?
Schreinerei Waechter
O o ostern ...
Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.