Skip to main content
Stack Overflow
  1. About
  2. For Teams

Return to Question

added 152 characters in body
Source Link

Code gives me: A B C

When I click on A B C it always shows me the last one "vodka". I want "martin" (for A), "lindsay"(for B), "vodka" (for C)
Please help me on my example.

myArray = [
 {
 letter: "A",
 brand: "martin"
 },
 {
 letter: "B",
 brand: "lindsay"
 },
 {
 letter: "C",
 brand: "vodka"
 }
];
var list = '';
for (var i = 0; i < myArray.length; i++) {
 list += "<br>" + myArray[i].letter;
 
 new_info = myArray[i].link;
 (function(new_info) {
  $(this).click(function(){ //this - refers to A or B or C
 $('#box2').text(new_info);
 });
}).call(this, myArray[i])
}

$('#box1').append(list);

Code gives me: A B C

When I click on A B C it always shows me the last one "vodka". I want "martin" (for A), "lindsay"(for B), "vodka" (for C)
Please help me on my example.

myArray = [
 {
 letter: "A",
 brand: "martin"
 },
 {
 letter: "B",
 brand: "lindsay"
 },
 {
 letter: "C",
 brand: "vodka"
 }
];
var list = '';
for (var i = 0; i < myArray.length; i++) {
 list += "<br>" + myArray[i].letter;
 
 new_info = myArray[i].link;
 $(this).click(function(){
 $('#box2').text(new_info);
 });
}
$('#box1').append(list);

Code gives me: A B C

When I click on A B C it always shows me the last one "vodka". I want "martin" (for A), "lindsay"(for B), "vodka" (for C)
Please help me on my example.

myArray = [
 {
 letter: "A",
 brand: "martin"
 },
 {
 letter: "B",
 brand: "lindsay"
 },
 {
 letter: "C",
 brand: "vodka"
 }
];
var list = '';
for (var i = 0; i < myArray.length; i++) {
 list += "<br>" + myArray[i].letter;
 
 new_info = myArray[i].link;
 (function(new_info) {
  $(this).click(function(){ //this - refers to A or B or C
 $('#box2').text(new_info);
 });
}).call(this, myArray[i])
}

$('#box1').append(list);
Post Closed as "exact duplicate" by Felix Kling, Fabrício Matté, Community Bot, KooiInc, Elias Van Ootegem
deleted 55 characters in body
Source Link

Code gives me: A B C

When I click on A B C it always shows me the last one "vodka". I want "martin" (for A), "lindsay"(for B), "vodka" (for C)
Please help me on my example. That's the best way I'll understand closures finally.

myArray = [
 {
 letter: "A",
 brand: "martin"
 },
 {
 letter: "B",
 brand: "lindsay"
 },
 {
 letter: "C",
 brand: "vodka"
 }
];
var list = '';
for (var i = 0; i < myArray.length; i++) {
 list += "<br>" + myArray[i].letter;
 
 new_info = myArray[i].link;
 $(this).click(function () {
 $('#box2').text(new_info);
 });
}
$('#box1').append(list);

Code gives me: A B C

When I click on A B C it always shows me the last one "vodka". I want "martin" (for A), "lindsay"(for B), "vodka" (for C)
Please help me on my example. That's the best way I'll understand closures finally.

myArray = [
 {
 letter: "A",
 brand: "martin"
 },
 {
 letter: "B",
 brand: "lindsay"
 },
 {
 letter: "C",
 brand: "vodka"
 }
];
var list = '';
for (var i = 0; i < myArray.length; i++) {
 list += "<br>" + myArray[i].letter;
 
 new_info = myArray[i].link;
 $(this).click(function () {
 $('#box2').text(new_info);
 });
}
$('#box1').append(list);

Code gives me: A B C

When I click on A B C it always shows me the last one "vodka". I want "martin" (for A), "lindsay"(for B), "vodka" (for C)
Please help me on my example.

myArray = [
 {
 letter: "A",
 brand: "martin"
 },
 {
 letter: "B",
 brand: "lindsay"
 },
 {
 letter: "C",
 brand: "vodka"
 }
];
var list = '';
for (var i = 0; i < myArray.length; i++) {
 list += "<br>" + myArray[i].letter;
 
 new_info = myArray[i].link;
 $(this).click(function () {
 $('#box2').text(new_info);
 });
}
$('#box1').append(list);
edited title
Link

javascript - How to put a closure insidemake this code work?

added 10 characters in body
Source Link
Loading
edited title
Link
Loading
added 87 characters in body; edited tags
Source Link
Felix Kling
  • 820.3k
  • 181
  • 1.1k
  • 1.2k
Loading
edited title
Link
Loading
Post Undeleted by Ben Delton
Post Deleted by Ben Delton
Source Link
Loading
lang-js

AltStyle によって変換されたページ (->オリジナル) /