Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/450.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript-压缩多个document.getelementbyid优化_Javascript_Optimization - Fatal编程技术网

Javascript-压缩多个document.getelementbyid优化

Javascript-压缩多个document.getelementbyid优化,javascript,optimization,Javascript,Optimization,将单个元素压缩成如下数组,然后调用e而不是document.get…是否有执行速度优势。。。。?除了缩短脚本的加载时间之外。蒂亚 从 到 编辑:我的意思是getElementById,而不是一些专门的标记。如果您有很多对document.getElementById的调用,并且想要缩短文档大小,您可以声明如下函数: function $(s){ return document.getElementById(s); } 如果多次使用引用,可以将它们放入变量中: var id1 = doc

将单个元素压缩成如下数组,然后调用e而不是document.get…是否有执行速度优势。。。。?除了缩短脚本的加载时间之外。蒂亚


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

如果您有很多对
document.getElementById的调用,并且想要缩短文档大小,您可以声明如下函数:

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

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

var id1 = document.getElementById('id1');
var id2 = document.getElementById('id2');
var id3 = document.getElementById('id3');
每次使用变量而不是调用
getElementById
都要快一点。将引用放入数组只是其中的一个变体


但是请注意,变量(或数组)包含对赋值时存在的元素的引用,如果删除并重新创建该元素,您将拥有对页面中不再存在的元素的引用。

有两种方法可以做到这一点:

//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.
//返回元素数组
功能元素BYID(ID){
var idsget=[].slice.call(参数),result=[];

对于(var i=0;i什么是
getElementsByIds
do?这是您的实现吗?Javascript DOM规范中不存在document.getElementsByIds。您的目标是什么?您的目标是什么浏览器?执行速度优势是什么?0.001毫秒?这样做不会有任何速度优势。正如其他人所说,没有原生
getElementsById()
method,因此对
getElementById()的调用次数相同
,以及阵列构造带来的额外开销。您好,您能详细解释一下如何使用它吗?Thanks@Jamex:您只需在代码中使用
$
而不是
document.getElementById
,例如
var e=$('SomeId')
。谢谢,我还刚刚读到,$仍然每次遍历document.getelementbyid。据我所知,这将减少代码,但不会提高处理速度,对吗?感谢您对var分配背后的基础知识的解释谢谢,我可能稍后会再讨论这个问题,但我仍在学习basics,但并不完全理解这段代码。也许这个JSFIDLE让您了解了它的工作方式:
var id1 = document.getElementById('id1');
var id2 = document.getElementById('id2');
var id3 = document.getElementById('id3');
//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.