[IE-Problem] Dynamischer href auf JS-Funktion

Thomas D

Erfahrenes Mitglied
Hallo!

Ich erzeuge dynamisch per JavaScript Formular-Buttons, die eine andere JS-Funktion aufrufen und sich durch unterschiedliche Parameter unterscheiden. Das ganze sieht wie folgt aus:

Code:
td = document.createElement ("td");
anchor = document.createElement ("a");

onClickStr = "javascript: statusAendern ('" +userArr[ c]["username"] +"');";

anchor.href = onClickStr; //ursprünglicher Lösungsansatz von mir
input = document.createElement ("input");
input.type = "button";
input.onclick = onClickStr; //Versuch damit den IE zum Gehen zu bewegen

//die folgenden Zeilen sind fürs Problem nicht mehr wichtig, zeigen aber, wie ich die einzelnen Objekte zusammenfüge. Der "Fehler" muss aber drüber liegen.
input.value = "Status ändern";
anchor.appendChild (input);
td.appendChild (anchor);
tr.appendChild (td);

tbody.appendChild (tr);

Das Problem an dieser Sache ist, dass es Firefox wunderbar funktioniert, aber im IE dieses Verlinken misslingt. Daher wollte ich fragen, ob jemand von euch weiß, woran das liegen könnte und wie ich den Code umgestalten muss, dass es auch dem IE schmeckt.

MfG, Thomas D.
 
Hi,

ich setze einfach mal voraus, dass es sich bei c um eine Laufvariable handelt, die inkrementiert wird.

Wenn ich für den Link einen Linktext über innerHTML setze, funktioniert es bei mir auch im IE.

Die Buttonlösung verlangt die Angabe einer Funktion. Ich habe es mit einer anonymen Funktion gelöst. Hier tritt bei Laufvariablen allerdings das Problem auf, dass sie gespeichert werden müssen, weil sonst immer der letzte Wert genommen werden müssen. Dazu weiche ich in meinem Beispiel auf eine Objekteigenschaft (save) aus.

Beispiel:
Code:
function theFunc(){
  var userArr = new Array();
  userArr[0] = new Array();
  userArr[0]['username'] = "Quaese";
  userArr[1] = new Array();
  userArr[1]['username'] = "Fritz";

  tbody = document.getElementById("tabelleID").getElementsByTagName("tbody")[0];

  for(var c=0; c<2; c++){
    tr = document.createElement ("tr");
    td = document.createElement ("td");
    anchor = document.createElement ("a");

    onClickStr = "javascript: statusAendern ('" +userArr[ c]["username"] +"');";

    anchor.href = onClickStr;   // ursprünglicher Lösungsansatz von mir
    anchor.innerHTML = "Link";  // Linktext zufügen
    input = document.createElement ("input");
    input.type = "button";
    input.save = c;  // Objekteigenschaft mit aktuellem Wert der Laufvariable
    input.onclick = function(){
      // Funktion mit Laufvariable aus "Save-Eigenschaft" aufrufen
      statusAendern(userArr[this.save]['username']);
    };

    //die folgenden Zeilen sind fürs Problem nicht mehr wichtig, zeigen aber, wie ich die einzelnen Objekte zusammenfüge. Der "Fehler" muss aber drüber liegen.
    input.value = "Status ändern";
    td.appendChild (anchor);
    td.appendChild (input);
    tr.appendChild (td);

    tbody.appendChild (tr);
  }
}

function statusAendern(strMsg){
  alert(strMsg);
}
Vielleicht hilft dir das weiter.

Ciao
Quaese
 

Neue Beiträge

Zurück