2010-04-11 6 views
2

Internet Explorer가 'this'javascript 키워드에 의해 제공되는 기능을 구현하여 이벤트를 유발 한 DOM 요소를 얻는 방법이 있습니까?IE의 자바 스크립트에서 'this'키워드 기능을 구현하려면 어떻게해야합니까?

내 문제 시나리오는 다음과 같습니다 나는 HTML 형태의 텍스트 필드의 변수 번호를 가지고,

<input type="text" id="11"/> 
<input type="text" id="12"/> 

처럼 ..

나는 각 텍스트 필드의 "onchange를"이벤트를 처리 할 필요가 처리는 이벤트를 트리거 한 필드의 'id'에 따라 다릅니다. 지금까지 내 옵션은 다음과 같습니다. 1) 각 텍스트 필드에 전용 이벤트 처리기를 연결하십시오. 그래서 N 필드가 있다면, 내가 N 다른 기능, 같은 있습니다 대신 하나 개의 일반적인 기능을 가지고

<input type="text" id="11" onchange="function11();"/> 
<input type="text" id="12" onchange="function12();"/> 

하지만 텍스트 필드가 동적으로 추가 및 제거, 그래서 더 좋은 방법이 될 것입니다.

2)처럼 '이'키워드를 사용

<input type="text" id="11" onchange="functionGeneric(this);"/> 
<input type="text" id="12" onchange="functionGeneric(this);"/> 

그러나이 옵션은 Internet Explorer에서 작동하지 않습니다.

누구든지 IE 또는 여기에 적용 할 수있는 다른 솔루션에서 작동시키기 위해 해결 방법을 제안 할 수 있습니까? 감사합니다. .

+5

빠른 참고 : 요소 ID가 숫자로 시작하는 것은 불법입니다. 그들은 편지 또는 밑줄로 시작해야합니다. 용서할 수없는 브라우저가 설명 할 수없는 행동을하지 않도록 적절히 수정하십시오. 귀하의 문제에 관해서는 질문을 업데이트하여 http://sscce.org를 포함시켜야합니다. – BalusC

답변

3

문제점을 재현 할 수 없습니다. 여기에 의견의 최신 정보를 기반으로 SSCCE는 다음과 같습니다

<!doctype html> 
<html lang="en"> 
    <head> 
     <title>SO question 2618458</title> 
     <script> 
      function functionGeneric(id) { 
       alert(id); // Shows either 11 or 12 correctly. 
      } 
     </script> 
    </head> 
    <body> 
     <input type="text" id="text_11" onchange="functionGeneric(this.id.split('_')[1]);"/> 
     <input type="text" id="text_12" onchange="functionGeneric(this.id.split('_')[1]);"/> 
    </body> 
</html> 

그것은 모든 주요 브라우저에서 잘 작동 내가 여기 있습니다. 귀하의 실제 문제는 다른 곳에 있습니다. SSCCE가 더 자세하게 나올 때까지, 어둠 속에서 근본적인 원인을 향해 총을 쏘고 있습니다.

+0

감사합니다. BalusC. 그것은 작동합니다. – sbr

1

요소 ID가 알파벳 또는 밑줄 문자 (최소한 사양에 따라)로 시작해야하기 때문에 두 번째 옵션이 작동하지 않습니다. ID를 starting with 'foo는'당신의 모든 입력에 변화 핸들러를 첨부하고, ID에서 수를 분할합니다

// make the ids start with a word, like "foo", followed by "_", followed by a number 
$("input[id^='foo_']").change(function() { 
    doSomething(this.id.split("_")[1]); // extract the number, pass to function 
}); 

가 일반에 전달할 : 나는 이런 식으로 뭔가를 선택하는 것입니다

함수는 숫자에서 작동합니다.

+1

나를 이길. 파이어 폭스는 숫자로 시작하는 ID를 허용하는 것으로 보이지만 IE는이 제품의 스펙을 고수하고있다. –

+0

IE에서 약간의 테스트를 거쳤습니다. 이것은 그가 실제로 가지고있는 문제를 설명하지 않습니다. – BalusC

+1

@BalusC - 그가 말하길 "처리는 이벤트를 유발 한 필드의 'ID'에 따라 달라집니다." 그래서, 그는 IE를 질식시키는'genericfunction()'에서 ID를 사용하려고 시도했을 것입니다. – karim79

관련 문제