2017-09-18 7 views
0

나는 document.getElementById을 많이 사용해야하는이 웹 페이지를 가지고 있습니다. 내가 게으른 때문에, 나는 짧은 변수에 document.getElementById을 할당하여 몇 바이트를 저장하는 생각 : 내가 의도 한대로변수 (객체에 속함)를 변수에 할당하는 것이 이런 식으로 동작하는 이유는 무엇입니까?

var geid = document.getElementById; 

그러나, 문제가 해결되지 않았다. 내가 무슨 일을하고있는 중이 야

var foo = document.getElementById('foo'); 
 
console.log(foo); // outputs: '<div id="foo">Foo</div>' 
 

 
var geid = document.getElementById; 
 
var foo_geid = geid('foo'); // Aaaaaargh! Uncaught TypeError: Illegal invocation 
 
console.log(foo_geid);
<div id="foo">Foo</div>
그래서

:

Uncaught TypeError: Illegal invocation

내 문제를 보여줍니다 다음 코드를 고려하십시오 : 그것은 나에게 다음과 같은 오류를했다? 내가 한 짓을 왜 안할 수 있니?

this이 모든 것을 수행해야한다는 직감이 있기 때문에 "How does the "this" keyword work?"을 확인했습니다. (나는 마치 getElementById을 가지고있는 것처럼 느낀다 에서 document 개체로 분리되었다. 그러나 나는 문제를 정확히 찾아 내고 명확하게 말할 수는 없다. 누구든지 나를 도울 수 있습니까?

+0

중복 [https://stackoverflow.com/questions/41757990/can을 -i-assign-document-getelementbyid-to-variable-in-javascript] (https://stackoverflow.com/questions/41757990/can-i-assign-document-getelementbyid-to-variable-in-javascript) –

+0

아마 당신은 오류 메시지를 인터넷 검색으로 간주해야합니다. [이 문제를 설명하는 것] (https://stackoverflow.com/questions/9677985/uncaught-typeerror-illegal-invocation-in-chrome) – musefan

+0

당신은 문서를 그것에 바인딩해야합니다 –

답변

1

당신은 함수를 사용해야합니다

var d = function(id) 
{ 
    return document.getElementById(id); 
} 

을하고 그렇게처럼 사용할 수의

var el = d('someId'); 
+0

나는 유권자가 나쁜 것이라고 생각하는 질문에 대답을하기 때문에 답을 얻는 것이 매우 일반적이라고 생각합니다. 일종의 downvote에 대한 '왜 당신이 중복되는 때이 나쁜 질문에 대답하고 닫아야한다' – musefan

+0

어쩌면. 나는 그 사람들이 한때 배웠던 것을 잊어 버렸고 중복 된 질문을 보지 못했을 것이라고 생각한다. 어떤 새로운 사람들은 그들이 필요한 것을 묻는 방법조차 모릅니다. 나는 오히려 일부 엘리트 주의자 타트보다 사람들을 돕고 싶습니다. – Stuart

+0

@ 뮤즈 팬 :이 질문이 * 나쁜 * 질문 인 방법을 물어보십시오. 복제? 확실히. 하지만 나쁘지? :) – Krumia