Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Get element by tag name shorthand?

I don't know what it's called, but I know that there's a way to get elements based on their tags without getElementsByTagName. It returns the same thing, but it's shorter and I'm using tags a lot in my project. What I'm talking about is document.frames[x] and document.images[x], but with other elements, like document.b[x] or document.a[x]. Seeing as document.images isn't the same as the <img> tag, it seems like if there are more they'd be named differently as well. Would anyone happen to know what it's called when using this method and/or have a list of accepted tags? Thanks.

P.S. Please do not suggest using a library such as jQuery. This project is meant to be a learning experience, so I want to use regular JavaScript.

like image 257
Jack Avatar asked Dec 12 '22 13:12

Jack


2 Answers

As mentioned elsewhere in the answers, this doesn't have anything to do with JavaScript really, these are DOM properties and methods accessible via the JavaScript language binding for the DOM.

With reference to addressing elements such as document.frames[x] (note that this is incorrect, it should be window.frames[x]) and document.images[x] - these are Document Object/HTML Collections and the W3C standard includes only images, applets, links, forms and anchors.

So unless I'm looking in completely the wrong place, from what I can tell from the DOM-1 and DOM-2 specs, there doesn't seem to any way of arbitrarily addressing elements by tag name the way that you remember doing.

Update

The MDC entry on HTMLCollection is more understandable; it reads

The following lists each item (and its specific properties) which return an HTMLCollection: Document (images, applets, links, forms, anchors); form (elements); map (areas); table (rows, tBodies); tableSection (rows); row (cells)

like image 58
no.good.at.coding Avatar answered Jan 01 '23 12:01

no.good.at.coding


Other than other JavaScript libraries creating these shorthands, I am not aware of any that are built into the language. It would be trivial to map this to your own shorthand:

var $ = document.getElementsByTagName;

// you can then use it like so:
$('SPAN').// and so on

Other than this, there is no built-in array-like access to all of the tags in the document:

http://www.javascriptkit.com/jsref/document.shtml

like image 22
Eli Avatar answered Jan 01 '23 12:01

Eli