Javascript - 压缩多个document.getelementbyid优化

时间:2011-09-04 09:02:01

标签: javascript optimization

是否有任何执行速度优势将各个元素压缩成如下所示的数组,然后调用e而不是document.get ....?除了缩短脚本的加载时间。 TIA。

document.getElementById('id1')
document.getElementById('id2')
document.getElementById('id3')

var e=document.getElementById("id1","id2","id3"); 

编辑:我的意思是getElementById,而不是一些专门的标签。

3 个答案:

答案 0 :(得分:1)

如果您对document.getElementById进行了大量调用并希望缩短文档大小,则可以声明如下函数:

function $(s){
    return document.getElementById(s);
}

答案 1 :(得分:1)

执行此操作的两种方法可能是:

//return an array of elements
function elementsById(ids){
  var idsget = [].slice.call(arguments), result = [];
  for (var i=0;i<idsget.length;i=i+1){
    result.push(document.getElementById(idsget[i]);
  }
  return result;
}
var els = elementsById('id1','id2','id3');
// retrieve using els[0], els[1] etc.

// return an object
function elementsById(ids){
  var idsget = [].slice.call(arguments), result = {};
  for (var i=0;i<idsget.length;i=i+1){
    result[idsget[i]] = document.getElementById(idsget[i]);
  }
  return result;
}
var els = elementsById('id1','id2','id3');
// retrieve using els.id1, els.id2 etc.

最初不会获得速度(document.getElementById被调用的次数与引用没有存储函数的元素的次数相同,但如果您随后需要其余部分中的元素,则效率会更高。脚本。

答案 2 :(得分:0)

如果多次使用引用,可以将它们放在变量中:

var id1 = document.getElementById('id1');
var id2 = document.getElementById('id2');
var id3 = document.getElementById('id3');

每次使用变量而不是调用getElementById会更快一些。将引用放在数组中只是其中的一种变体。

但请注意,变量(或数组)包含对分配时存在的元素的引用,如果删除并重新创建元素,则将引用页面中不存在的元素