문제

<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).

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top