2017-01-20 13 views
0

私はdocument.getElementByIdが関数だと思います。javascriptでdocument.getElementByIdを変数に割り当てることはできますか

したがって、この関数を変数に割り当てることができます。この

var hello = document.getElementById; 
 
console.log(hello('hello')));
<div id="hello">hello</div>

に似ていますが、このようなエラーが発生しました:

Uncaught TypeError: Illegal invocation

+0

'VARハロー=のdocument.getElementById ( 'hello'); '' console.log(hello) ' – zer00ne

+0

あなたは正確に何をしようとしていますか? –

+0

このメソッドは、どの 'Document'インスタンスを呼び出すかを知っていなければなりません。おそらく、それは 'document'です。 – Oriol

答えて

4

問題がコンテキストです。関数への参照を取得すると、関数のコンテキストがdocumentに失われます。

var hello = document.getElementById.bind(document); 

の作業例::だから、あなたがしようとしているものを行うためには、あなたがbindにコンテキストを必要とする

var hello = document.getElementById.bind(document); 
 
console.log(hello('hello'));
<div id="hello">hello</div>

+1

' :: document.getElementById'は素晴らしいでしょう – Oriol

2

がIDを表すパラメータを持つ関数としてそれをラップします。

var hello = function(id){ 
 
    return document.getElementById(id); 
 
} 
 
console.log(hello('hello') );
<div id="hello">hello</div>

関連する問題