Element per JS Eventhandler + Funktion zuweisen

Status
Nicht offen für weitere Antworten.

sam

Erfahrenes Mitglied
Hi JS'ler,

Der Titel klingt ein wenig verwirrend, aber
einfacher kann man das nicht ausdrücken ;)
Ich habe ganz viele Links auf einer Seite,
die alle den Namen 'parents' haben.
Um den Code schlank zu halten möchte ich
per JS die Eventhandler 'onmouseover' und
'onmouseout' zu allen Links hinzufügen, die
dann die Funktionen 'over(zahl)' und
'out(zahl)' aufrufen.
Nur, wer hätts gedacht, geht das nicht, so
wie ich mir das vorgestellt habe :(

Ich habe die Vermutung, dass es an folgendem
Code liegt, da ich da immer eine 0 als
Wert bekomme...
PHP:
document.getElementsByName('blubb').length
Der Rest sieht so aus, wird aber eben
wegen der 0 schon abgebrochen, bevor
er anfängt :rolleyes:
PHP:
for(i=0;i<document.getElementsByName("blubb").length;i++){
document.getElementsByName("blubb")[i].onmouseover = new Function("alert('Test(over): '+i);");
document.getElementsByName("blubb")[i].onmouseout = new Function("alert('Test(out): '+i);");
}
Ideen? Lösungsvorschläge? :)

mfg
sam
 
In folgendem Script scheint es aber über
den Tagnamen zu funktionieren...
Und das ist ja theoretisch auch nichts
anderes, oder?
PHP:
function BlurLinks(){
links=document.getElementsByTagName('a');
for(i=0;i<links.length;i++){
links[i].onfocus=new Function("if(this.blur)this.blur()");
}
}
 
Hi Sam,

ich weis nicht wo sich unsere Lösungen unterscheiden, aber so läufts zu 70%...

PHP:
<html>
<head>
<script type="text/javascript">

function test(){
    var x = document.getElementsByName('parents');
    var y = x.length;

    for(i=0;i<y;i++){
        x[i].onmouseover = new Function("alert('Test(over): '+i);");
        x[i].onmouseout = new Function("alert('Test(out): '+i);");        
    } 
}

</script>
</head>
<body onLoad="test()"> 
    <a href="http://www.tutorials.de" name="parents">0</a><br>
    <a href="http://www.tutorials.de" name="parents">1</a><br>
    <a href="http://www.tutorials.de" name="parents">2</a><br>
    <a href="http://www.tutorials.de" name="parents">3</a><br>
    <a href="http://www.tutorials.de" name="parents">4</a><br>
    <a href="http://www.tutorials.de" name="parents">5</a><br>
    <a href="http://www.tutorials.de" name="parents">6</a><br>
    <a href="http://www.tutorials.de" name="parents">7</a><br>
    <a href="http://www.tutorials.de" name="parents">8</a><br>
    <a href="http://www.tutorials.de" name="parents">9</a><br>
</body>
</html>

nur das "i" in den "onTheFly"-Funktionen passt noch nicht.

ciao


// Edit: Pseudolösung:
Wenn du den Links eine Nummer als Title zuweist (ist legetim, da Title ein Universalattribut ist),kannst du in der Funktion locker drauf zugreifen...

PHP:
<head>
<script type="text/javascript">
function test(){
    var x = document.getElementsByName('parents');
    var y = x.length;
    for(i=0;i<y;i++){
        x[i].onmouseover = new Function("alert('Test(over): '+this.title);");
        x[i].onmouseout = new Function("alert('Test(out): '+this.title);");        
    } 
}
</script>
</head>
<body onLoad="test()"> 
    <a href="http://www.tutorials.de" title="0" name="parents">0</a><br>
    <a href="http://www.tutorials.de" title="1" name="parents">1</a><br>
    <a href="http://www.tutorials.de" title="2" name="parents">2</a><br>
    <a href="http://www.tutorials.de" title="3" name="parents">3</a><br>
    <a href="http://www.tutorials.de" title="4" name="parents">4</a><br>
</body>
</html>
 
Zuletzt bearbeitet:
Hmmm, kein Plan, wieso mein Script nicht
funktioniert hat...
Das i zeigt immer nur die Anzahl der Links
auf der Seite an...wieso das? :rolleyes:
 
Original geschrieben von sam
Das i zeigt immer nur die Anzahl der Links auf der Seite an...wieso das? :rolleyes:
das is mir leider auch nicht klar... Deshalb die Title-Notlösung :(
Könnte mir nur denken, das es halt die vorhanden Variable nimmt und nicht die jeweilig aktuelle - new Function arbeitet dann halt nicht nach dem "Document.write" Prinzip (<- weis nicht wie ich´s anders Formulieren soll)

bye
 
Zuletzt bearbeitet:
Das mit dem zusätzlichen title wäre schon
mal wenigstens lauffähig, allerdings kann
ich auch das onmouseover/out einfügen,
wenn ich stattdessen einen title
reinschreiben muss :rolleyes:

Gibt es eine Alternative zu new Function()?
Eine, die mit dem i zurecht kommt?
 
Geht doch mit new Function - wir haben blos was Übersehen :)

PHP:
<html>
<head>
<script type="text/javascript">
function test(){
    var x = document.getElementsByName('parents');
    var y = x.length;
    
    for(i=0;i<y;i++){
        x[i].onmouseover = new Function("alert('Test(over): '+"+i+");");
        x[i].onmouseout = new Function("alert('Test(out): '+"+i+");");        
    } 
}
</script>
</head>
<body onLoad="test()"> 
    <a href="http://www.tutorials.de" name="parents">0</a><br>
    <a href="http://www.tutorials.de" name="parents">1</a><br>
    <a href="http://www.tutorials.de" name="parents">2</a><br>
    <a href="http://www.tutorials.de" name="parents">3</a><br>
    <a href="http://www.tutorials.de" name="parents">4</a><br>
</body>
</html>

bye
 
Zuletzt bearbeitet:
Status
Nicht offen für weitere Antworten.

Neue Beiträge

Zurück