JavaScript : 방법으로 제어를 보내는 방법
-
03-07-2019 - |
문제
<a href="" id="someId" onclick="SomeMethod(self);"></a>
Somemethod가 가질 수있는 곳 :
function SomeMethod(item)
{
item.setAttribute('name', item.id);
}
대신에:
function SomeMethod(itemId)
{
var someItem;
someItem = document.getElementById(itemId);
someItem .setAttribute('name', someItem .id);
}
어리석은 예이지만 아이디어는 ID 자체를 보내는 것이 아니라 실제 제어가 메소드를 호출하는 것입니다. 나는 이것을 할 수 있지만 운이 좋은 검색이 없었습니다 ... 부분적으로 무엇을 검색 해야할지조차 모르기 때문에 부분적으로는 운이 좋았습니다.
나는 그것이 자아라고 생각했지만, 자기는 내가 실행했을 때 내가 원하는 것이 아닌 것 같습니다.
해결책
사용 this
예어.
<a href="" id="someId" onclick="SomeMethod(this);"></a>
다른 팁
실제로 통과 할 필요가 없습니다 이것 당신은 당신의 기능에 대한 논쟁으로 이벤트 객체를 클릭하십시오 액세스 할 수 있습니다. 그래서:
<a href="" id="someId" onclick="clickEventHandler()"></a>
<script>
function clickEventHandler(event) {
if (!event) {
event = window.event; // Older versions of IE use
// a global reference
// and not an argument.
};
var el = (event.target || event.srcElement); // DOM uses 'target';
// older versions of
// IE use 'srcElement'
el.setAttribute('name', el.id);
}
</script>
HTML 속성의 모든 기능 호출 에서이 접근법을 사용하는 경향이 있습니다.
onclick="SomeMethod.call(this)"
그런 다음 JavaScript에서 :-
function SomeMethod()
{
this.setAttribute('name', this.id);
}
JavaScript 코드의 이벤트 핸들러 속성에 직접 할당 할 수있을 때 뚜렷한 이점이 있습니다.
document.getElementById("someID").onclick = SomeMethod
Somemethod가 컨텍스트 요소를 매개 변수로 사용하면 설정하는 것이 매우 어색합니다.
function(id) {
var elem = document.getElementById(id)
elem.onclick = function() { SomeMethod(elem); }
}("someID");
더 나쁜 것은 메모리 누출 폐쇄 일 것입니다.
이 지점에서: SomeMethod(this)
- this
창 객체를 반환하므로 사용하지 마십시오. 올바른 사용 방법 this
키워드는 컨텍스트와 관련이 있으므로 사용하십시오 SomeMethod.call(this)
.
제휴하지 않습니다 StackOverflow