This is my HTML Code
<html>
<head>
<title> Test Page </title>
<script type='text/javascript'>
function test() {
var ta = document.getElementsByTagName('body')[0].getElementsByTagName('li');
}
</script>
</head>
<body onload='test()'>
<ul>
<li> Test 1 </li>
<li> Test 1 </li>
<li> Test 1 </li>
<li> Test 1 </li>
</ul>
</body>
</html>
Which of the following is better and why?
document.getElementsByTagName('body')[0].getElementsByTagName('li')
document.getElementsByTagName('li')
Also I couldn’t find any documentation or reference for getElementsByTagName implementation across browsers [atleast a overview on some major browsers] although I found really interesting things about document.getElementById that it is kind of hash look up atleast in firefox and chrome. Wish to have some help on the implementation too.
First of all, you should never get the body tag with this:
It’s always more efficient to just use the built-in property for the body:
Second of all, all performance questions should be answered by testing with a tool like jsPerf. In this case, you can build a test that compares between these two if you want, but I think the point is moot given the previous simplification:
and
In a jsPerf I built to test this,
document.getElementsByTagName('li')is the fastest, followed bydocument.body.getElementsByTagName('li')anddocument.getElementsByTagName('body')[0].getElementsByTagName('li')is the slowest.Here’s a screenshot of the test from several browsers: