나는 캘린더 스크립트를 만들고 있는데 오페라 브라우저에서는 잘 작동하지만 파이어 폭스에서는 그렇지 않다. 문제는 당일 선택에서 발생합니다. 이 특정 스 니펫은 문제를 보여줍니다. 이 경우 dayofweek []에는 사람들이 클릭 할 수있는 고유 번호가 포함 된 31 개의 DIV 태그가 들어 있습니다.자바 스크립트 onclick 비정상적인 동작
<script type="text/javascript">
var maxdays=31;
for (var n=1;n<=maxdays;n++){
dayofweek[n].onclick="selectday("+n+")";
}
function selectday(day){alert(day+" is selected");}
</script>
이 스크립트는 올바른 번호가 선택되었다는 메시지를 인쇄하여 작동합니다 (오페라에서 작동). 파이어 폭스에서 onclick 이벤트 내가 클릭을 만들어도 그래도 실행되지 않습니다 .. 내가 노력
다른 방법이 있습니다 :
<script type="text/javascript">
var maxdays=31;
for (var n=1;n<=maxdays;n++){
dayofweek[n].onclick=function(){selectday(n);}
}
function selectday(day){alert(day+" is selected");}
</script>
이 시간, 파이어 폭스와 오페라 응답,하지만 문제 모두는 "그 31 선택됨 "은 내가 선택한 번호와 상관없이 나타납니다.
누구든지 내가 할 수있는 모든 자바 스크립트 사용 인터넷 브라우저가 내 코드와 협조하도록 할 수 있는지 알고 있습니까?
함수를 생각하지 않았습니다. 기능에서 그러나 그 아이디어는 작동하지 않는다. 내가 얻지 못하는 것은 하루가 아무 것도 알 수없는 것처럼 보일 때 알리 함수에서 값을 유지하는 방법입니다. –
실제로 자바 스크립트 개발자가 처음으로 작성한 가장 일반적인 실수 중 하나입니다. (따라서 minitech는 질문을 표시했습니다. 중복으로). 트릭은 자바 스크립트에서 범위 지정과 클로저를 이해하는 것입니다. 다음은 문제에 대한 설명이 담긴 기사입니다. http://robertnyman.com/2008/10/09/explaining-javascript-scope-and-closures/#highlighter_546762 멋진 Google 기술 관련 이야기가 있었지만 더 이상 찾지 못한다. –