Set document.getElementById to variable

getelementbyid, javascript, variables

Solution

The value of `this` depends on how you call the function.

When you call `document.getElementById` then `getElementById` gets `this === document`. When you copy `getElementById` to a different variable and then call it as `$` then `this === window` (because `window` is the default variable).

This then causes it to look for the id in the window object instead of in the document object, and that fails horribly because windows aren't documents and don't have the same methods.

You need to maintain the `document` in the call. You can use a wrapper functions for this e.g.

function $ (id) { return document.getElementById(id); }

… but please don't use `$`. It is a horrible name. It has no meaning and it will confuse people who see it and think "Ah! I know jQuery!" or "Ah! I know Prototype" or etc etc.

Problem

The following works: ``` $ = document.form; x = $.name.value; ``` This doesn't: ``` $ = document.getElementById; x = $("id").value; ``` Any ideas on why this doesn't work or how to make it so?

Original source

Related problems