오늘 요소에 대한 이벤트를 등록할 때 addEventListener를 사용하는 중에 문제가 발생했습니다. 이전에도 이 문제를 겪었던 것 같습니다. 이를 요약할 필요가 있다고 생각합니다. 먼저 다음 코드를 살펴보세요. 다음 코드에 문제가 있다고 생각하시나요? id3에 해당하는 요소를 클릭하면 id3이 팝업되는 것이 가능한가요?
예제 1
var obj3=document.getElementById('id3'); obj3.addEventListener('click',curClick('id1'),true); function curClick(id){ alert(id); }
대답은 '아니요'입니다. 이 코드 줄은 ID3이 팝업되기 때문에 내가 원하는 효과를 얻을 수 없습니다. . id3에 해당하는 요소를 클릭하면 페이지에 아무 일도 일어나지 않습니다.
그래서 코드를 다음 두 가지 상황으로 변경했습니다.
예제 2
var obj3=document.getElementById('id3'); obj3.addEventListener('click',function(e){curClick('id3');stopPropagation(e)},true); function curClick(id){ alert(id); }
예시 3
var obj1=document.getElementById('id1'); obj1.addEventListener('click',curClick1,true); function curClick1(){ alert('okey'); }
이번에는 실행이 정상적으로 되는 이유는 무엇인가요?
JS 세계에서는 curClick('id3')이 curClick('id3')을 매개변수로 전달하는 대신 직접 호출하기 때문에 매개변수로 전달하려면. , 매개변수를 전달할 필요가 없으면 함수 이름을 직접 전달하면 됩니다. 매개변수를 전달해야 하는 경우 두 가지 해결 방법이 있습니다.
방법 1: 익명 함수의 도움 , 전달할 함수, 익명 함수에 배치하고 익명 함수를 예 2
와 같은 매개변수로 사용합니다. 예: use function(){myfunction(val1,val2, ...);}를 매개변수 전송으로 사용합니다.
두 번째: 전달해야 할 함수를 다시 작성합니다
function curClick1(val){ <span style="white-space:pre"> </span>return function(){ alert(val); }; }
위는 JS에서 함수를 다른 함수의 매개변수로 전달하는 방법을 요약한 것입니다. 더 많은 관련 내용 PHP 중국어 홈페이지(www.php.cn)를 주목해주세요!