Reputation: 382841
document.getElementById doesn't seem to work across all browsers (I mean some old ones) and I am sure there are developers who are not aware of this.
What solutions would you suggest to make it cross-browser?
Thanks
Upvotes: 6
Views: 6527
Reputation: 847
function getDOM() {
if (document.getElementById) {
return document.getElementById;
}
var window_document = window.document || {};
var elements = window_document.all || window_document.layers;
if(elements) {
return function(x) { return elements[x]; }
}
// everything failed
throw new InternalError('No means to "getElementById"');
}
... then
var getElementById;
try {
getElementById = getDOM();
} catch(err) {
alert(err);
}
// implicit 0K
var oHTMLElement = getElementById('#main');
Upvotes: 0
Reputation: 39907
Are you sure its not this kind of problem? Have a look its interesting, I didn't know that before.
However, to complement what is already suggested by David Dorward, you write a function like below.
function getElement (id) {
if (document.getElementById) {
return document.getElementById(id);
}
else if (document.all) {
return window.document.all[id];
}
else if (document.layers) {
return window.document.layers[id];
}
}
Upvotes: 4
Reputation: 1787
getElemID(obj){
if(document.getElementByID){
return document.getElementByID(obj);
}
else if (document.all){
return document.all[obj];
}
else if (document.layers){
return document.layers[obj];
}
else {
alert("Could not find support");
return false;
}
}
Upvotes: 1
Reputation: 944203
If document.getElementById doesn't work then either:
or
There are three ways to deal with browsers of this era.
getElementById
and friends before trying to use them ( if (!document.getElementById) { return false; /* Insufficient DOM to bother with JS here */ }
)document.all
and document.layers
Upvotes: 9