Provided you have a container div with hundreds of very simple children elements such as the following:
<div id="stuffContainer" class="item-container">
<div class="single-item"></div>
<div class="single-item"></div>
<div class="single-item"></div>
<div class="single-item"></div>
<div class="single-item"></div>
<div class="single-item"></div>
[...]
</div>
Would including an unique id for each single element harm (client) performance in any (meaningful) way, be it rendering, javascript or memory wise?
Why I’m asking: I may need from time to time to reference specific items, and I’m trying to figure out whether I should precalculate in advance which items I will need to select, giving ids to them and leaving the rest out, or just assigning ids to all of them, which would make the process more straight forward but I wonder if this may be an overkill somehow.
Bonus points (if I could actually give them) if someone can talk about how this is handled by modern browsers and why it would/would not make a difference in terms of how browsers render and manage the DOM.
At the very most, I’m guessing that the basic few things a browser would do is assign the ID as a property to each element when building the DOM structure, as well as store the IDs in a hash table to facilitate things like
#idselectors,document.getElementById()and idref lookups later. I don’t think this is going to cause even a slight dent in observed performance or memory usage, as hash tables and the DOM are designed to be very well-optimized.That said, if IDs aren’t needed on your elements at all, then there quite simply is no point in assigning them IDs; you’re going to end up with a whole lot of markup bloat instead. As Dan Davies Brackett mentions, that will obviously cause a slowdown since it depends on the client connection.
If you can afford to reference these elements using CSS selectors, you can always use
:nth-child()to look up specific children. If you need to support older browsers, there’s always a CSS2 solution. See these questions: