Ich habe versucht, die Lösungen in diesen beiden Threads angeboten, jedoch keiner von ihnen funktioniert.javascript: addEventListener in Schleife funktioniert nicht. Passing gleiche Parameter, um mit jeder Schleife zu funktionieren
Javascript multiple dynamic addEventListener created in for loop - passing parameters not working
JavaScript closure inside loops – simple practical example
So, hier ist, wo ich bin.
Hier meine Schleife ist:
var eduWidths = [415.66, 116.13];
function eduResize(j,el){
var edu = document.getElementById(el);
console.log("j: "+j+" , el: "+ el +" , eduWidths[j]: "+eduWidths[j]); //output: "j: 1 , el: edu0 , eduWidths[j]: 116.13"
//this does not work, j is always "1"
$(edu).animate({width: eduWidths[j]+'px'}, 500);
}
for(i=0; i<edus.length; i++){
var edu = document.getElementById('edu'+i);
edu.addEventListener("mouseover",function(){
//this works without any problem
$(this).animate({width:'400px'}, 500);
});
var j=0;
edu.addEventListener('mouseleave', function() {
//this does call the eduResize function, and passes j and this.id
eduResize(j,this.id);
});
j++;
}
Trotz das richtige Ziel hat, wird das Ziel div immer Ändern der Größe auf dieser Linie die 1 Indexposition eduWidths [] Array:
$(edu).animate({width: eduWidths[j]+'px'}, 500);
UPDATE: Hier ist der HTML:
<div class="eduEvent" id="edu0" ></div>
<div class="eduEvent" id="edu1" ></div>
benötigen HTML, ich bin nicht sicher, ob Sie beteiligt mehrere Elemente haben oder wenn Sie nur eine haben. – zer00ne
Warum jQuery und DOM mischen? $ (". eduEvent"). Hover .... – mplungjan
Verwenden Sie eine gemeinsame Klasse Mann! Keine Notwendigkeit, IDs zu loopen. – tymeJV