【www.gdgbn.com--元旦图片】
javascript 获取文档所有图片
function updateUI(){
var imgs = document.getElementsByTagName("img");
for(var i=0, len=imgs.length; i < len; i++){
imgs[i].title = document.title + " image " + i;
}
var msg = document.getElementById("msg");
msg.innerHTML = "Update complete.";
}
这个函数可能看起来完全没有问题,但它有三个参考全球文档对象。如果有一个页面上
的图像人数众多,在循环参考文件可以得到执行的几十或几百次,每次需要查找的范围
链。通过创建一个局部变量的文档对象点,您可以增加限制了一些全球查找只有一个此
函数的性能:
function updateUI(){
var doc = document;
var imgs = doc.getElementsByTagName("img");
for(var i=0, len=imgs.length; i < len; i++){
imgs[i].title = doc.title + " image " + i;
}
在这里,第一个文档对象是存储在本地文档变量。该文档变量,然后用文件地点在整个
代码的其余部分。只有一个全球在此函数查找,比以前的版本,保证了它会运行得更快
。一个好的经验法则是任何全球存储对象,用于在一个函数不止一次作为一个局部变量
。
避免与声明
with语句应避免在性能很重要。类似的功能,具有语句创建自己的范围,因此增加了它
在执行的代码的范围链的长度。在执行的代码的语句是保证代码的运行速度比执行外,
是因为在查找范围链的额外步骤。这是罕见的语句是必需的,因为它主要是用来消除多
余的字符。在大多数情况下,局部变量可以用来完成不引入一个新的范围,同样的事情
。下面是一个例子:
function updateBody(){
with(document.body){
alert(tagName);
innerHTML = "Hello world!";
}
}
function updateBody(){
var body = document.body
alert(body.tagName);
body.innerHTML = "Hello world!";
}
此代码使用使用document.body更轻松地与发言。同样的效果可以通过使用一个局部变量
,如下:
var msg = doc.getElementById("msg");
msg.innerHTML = "Update complete.";
}