molily: setAttribute('onclick' ..... );geht das?

Beitrag lesen

Hallo,

anchors= ContentPart.getElementsByTagName("a");
for (var i = 0; i < anchors.length; i++)
{
  anchors[i].onClick= function()
  {
   alert('hello link');
  }
  if(anchors[i].name=="_self")

Ein a-Element mit name="_self", was soll das bedeuten?

Mehrere a-Elemente mit demselben name-Attributwert sind übrigens nicht erlaubt. Suchst du vielleicht eine Klasse?

{
   temp_a= anchors[i].href;
   anchors[i].setAttribute("onClick", "alert('"+temp_a+"')");
   anchors[i].setAttribute("href", "javascript:void(0);");

Erst mal kannst du Event-Handler nicht so setzen wegem dem IE. Das Schema, an das du dich halten musst, ist:

anchors[i].onclick = funktion;

Zweitens, warum speicherst du den Wert der href-Eigenschaft überhaupt in einer Variable, um sie im Click-Handler auszugeben? Im Click-Handler kannst du auch direkt über »this« auf das geklickte a-Element zugreifen und so kommst du auch an die href-Eigenschaft:

function klick () {  
   alert(this.href);  
   return false;  
}  
...  
anchors[i].onclick = klick;

return false; bewirkt, dass der Browser nicht auch noch das href-Linkziel annavigiert, du musst also href nicht mit »javascript:void(0)« überschreiben.

Darüber hinaus:

Wenn der Handler gewisse Variablen braucht, die nicht über »this« erreichbar sind, erst dann könnte man auf die Idee kommen, eine variable Funktion als Handler zu setzen. Das ginge so:

var parameter = "individuell";  
anchors[i].onclick = new Function("alert('" + parameter + "')");

Aber das ist eigentlich immer unnötig, denn man kann diese Variable einfach an das Elementobjekt anhängen und dann im Handler über this darauf zugreifen:

  
function klick () {  
   alert(this.parameter);  
}  
...  
anchors[i].parameter = "individuell";  
anchors[i].onclick = klick;

Mathias