Search code examples
javascriptfirst-class-functions

Assigning document.getElementById to another function


I am trying to do the following in JavaScript:

var gete = document.getElementById;

But I am getting the following error (From FireBug's Console):

uncaught exception: [Exception... "Illegal operation on WrappedNative prototype object" nsresult: "0x8057000c (NS_ERROR_XPC_BAD_OP_ON_WN_PROTO)" location: "JS frame :: http://localhost:8080/im_ass1/ :: anonymous :: line 15" data: no]

Now obviously I can wrap the function as follows:

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

But what is the reason I'm getting the above exception when assigning the function to another name?


Solution

  • To invoke an alias of document.getElementById in Firefox and Google Chrome, you should be doing it as follows:

    var gete = document.getElementById;
    gete.call(document, 'header').innerHTML = 'new';
    

    You may want to check out the following Stack Overflow post for a detailed explanation behind this: