현재 저는 RaphealJS 라이브러리를 사용하는 프로젝트에서 일하고 있습니다.이 같은 문제가 발생할 때까지 모든 것이 괜찮은 것처럼 보입니다. 대신이 여러 번 일을Javascript For-Loop
:
dolphinIcon[1].click(function() {
this.attr({
stroke: 'black', 'stroke-width': 2,
fill: 'green'
});
alert(1);
});
dolphinIcon[2].click(function() {
this.attr({
stroke: 'black', 'stroke-width': 2,
fill: 'green'
});
alert(2);
});
dolphinIcon[3].click(function() {
this.attr({
stroke: 'black', 'stroke-width': 2,
fill: 'green'
});
alert(3);
});
난 그냥이 왜 할 수 없어?
for(var i=0; i<dolphinIcon.length; i++){
dolphinIcon[i].click(function() {
this.attr({
stroke: 'black', 'stroke-width': 2,
fill: 'green'
});
alert(i);
});
}
난 그냥() 인덱스의 수를 경고하기 위해 배열에 저장되어있는 각각의 아이콘을 원하는,하지만 난에 대한 루프를 사용할 때, 그것은 항상) (경고 같은 번호 (배열의 크기)
어떤 아이콘을 클릭했는지에 관계없이 이 문제를 어떻게 해결해야합니까?
이 대답의 가장 사본입니다 :
https://code.sololearn.com/WHc3WmA7TrMP
벨로
는 코드입니다. 나는 로켓이 전에 대답 한 것으로 의심한다.) –@KevinNielsen : 네, 이것은 일반적인 문제입니다. 나는 이것에 몇 번 대답했다. 변수로 클로저를 만드는 것을 선호합니다. 코드를 클리너로 유지할 수 있습니다. 내가 처음으로 JavaScript를 시작했을 때, 나는 똑같은 문제를 겪었습니다 :-P –
오펄이했던 것과 같은 방식으로 라파엘을 처음 접하게되었습니다. 자주 사용하지 않기 때문에, 배열의 특정 항목에 대한 루프 변수의 값으로 공통 핸들러 함수를 호출하기 때문에 인라인 익명 함수를 좋아한다는 것을 배웠습니다. 그 이상으로, 당신의 기술은 확실히 깨끗합니다. –