document.all与document.getElementById
什么时候应该使用document.all与document.getElementById ? 
  document.all是W3C标准的专有微软扩展。 
  getElementById()是标准的 – 使用它。 
 但是,考虑如果使用像jQuery这样的js库会派上用场。 例如, $("#id")是getElementById()的jQuery等价物。 另外,你可以使用不止CSS3select器。 
  document.all是非常古老的,你不必再使用它了 。 
引用Nicholas Zakas的话 :
例如,当DOM年轻的时候,并不是所有的浏览器都支持getElementById(),所以有很多这样的代码:
 if(document.getElementById){ //DOM element = document.getElementById(id); } else if (document.all) { //IE element = document.all[id]; } else if (document.layers){ //Netscape < 6 element = document.layers[id]; } 
 实际上, document.all与document.getElementById只有很小的差别。 你不会用一个替代另一个,他们不会返回相同的东西。 
如果您试图通过浏览器function进行筛选,则可以像Marcel Korpel的回答那样使用它们:
 if(document.getElementById){ //DOM element = document.getElementById(id); } else if (document.all) { //IE element = document.all[id]; } else if (document.layers){ //Netscape < 6 element = document.layers[id]; } 
 但是,从function上来说, document.getElementsByTagName('*')更像document.all 。 
 例如,如果您实际上要使用document.all来检查页面上的所有元素,如下所示: 
 var j = document.all.length; for(var i = 0; i < j; i++){ alert("Page element["+i+"] has tagName:"+document.all(i).tagName); } 
 你可以使用document.getElementsByTagName('*')来代替: 
 var k = document.getElementsByTagName("*"); var j = k.length; for (var i = 0; i < j; i++){ alert("Page element["+i+"] has tagName:"+k[i].tagName); } 
document.all()是访问DOM元素的非标准方式。 它从几个浏览器已经被弃用了。 它使您可以访问文档上的所有子元素。
document.getElementById()是一个标准的,完全支持。 每个元素在文档上都有一个唯一的ID。
如果你有:
 <div id="testing"></div> 
运用
 document.getElementById("testing"); 
将有权访问该特定的分区。
  document.querySelectorAll (及其返回第一个find的元素的document.querySelector()变体)非常强大得多。 您可以轻松地: 
-  使用document.querySelectorAll("*")获取整个集合,有效地模拟非标准的document.all属性;
-  使用document.querySelector("#your-id"),有效地模拟document.getElementById()函数;
-  使用document.querySelectorAll(".your-class"),有效地模拟document.getElementsByClassName()函数;
-  使用document.querySelectorAll("form")而不是document.forms,而document.querySelectorAll("a")而不是document.links;
- 并执行任何更复杂的DOM查询(使用任何可用的CSSselect器),只是不能用其他文档构build。
 统一查询API是最好的select。 即使document.all将在标准中,这也是不方便的。 
而document.all将不被IE11支持!
http://msdn.microsoft.com/en-us/library/ie/ms537434(v=vs.85).aspx
 具体来说, document.all是针对IE4引入的,引入了document.getElementById 。 
 所以, document.all的存在意味着代码的目的是支持IE4 ,或者试图将浏览器识别为IE4(虽然它可能是Opera),或者编写(或复制和粘贴)代码的人wasn最新的。 
 在极不可能的情况下,您需要支持IE4,那么您确实需要document.all (或处理这些古老的IE规范的库)。