Es gibt zwei Versionen, angeblich, wenn der Benutzer den ersten Link klicken, wird "1", und die zweite Verbindung, "2" aufmerksam machen, etc .:Warum funktioniert ein JavaScript-Abschluss und der andere nicht?
Version 1:
<a href="#" id="link1">click me</a>
<a href="#" id="link2">click me</a>
<a href="#" id="link3">click me</a>
<a href="#" id="link4">click me</a>
<a href="#" id="link5">click me</a>
<script type="text/javascript">
for (i = 1; i <= 5; i++) {
document.getElementById('link' + i).onclick = (function() {
return function() {
var n = i;
alert(n);
return false;
}
})();
}
</script>
Version 2:
<a href="#" id="link1">click me</a>
<a href="#" id="link2">click me</a>
<a href="#" id="link3">click me</a>
<a href="#" id="link4">click me</a>
<a href="#" id="link5">click me</a>
<script type="text/javascript">
for (i = 1; i <= 5; i++) {
document.getElementById('link' + i).onclick = (function() {
var n = i;
return function() {
alert(n);
return false;
}
})();
}
</script>
Version 1 wird nicht funktionieren. Version 2 wird. Ich denke, ich kenne den Grund dafür, möchte aber mit den Erklärungen anderer vergleichen, warum Version 1 nicht funktioniert.
aus dem Blick auf Version 1, macht es nicht jedes Mal eine neue Kopie von 'i'? –
Nein. In Version 1. erstellt es keine Kopien, während Foreach wiederholt wird. Aber es macht eine Kopie, wenn Sie darauf klicken. –