1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > 一行代码告别document.getElementById【javascript】

一行代码告别document.getElementById【javascript】

时间:2019-12-12 20:02:55

相关推荐

一行代码告别document.getElementById【javascript】

web前端|js教程

getElementById

web前端-js教程

所以绝大多数的脚本里,都是直接通过元素的id来访问DOM的。

后来随着各种浏览器接踵而至,逐渐的替代了ie。为了保证各路门派统一规则,标准化越来越被重视。当初那种直接访问id的方法,逐渐被document.getElementById所替代。如果这年头还在用id访问元素,要么就是做程序里的内嵌网页,要么就是像铁道部那样的超境界仿古网站:) 当然只要保证你的用户都是用ie访问,这样的非标准也但用无妨。

然而,很多第三方浏览器刚出来的时候,为了保证能与当时大量的非标准页面兼容,都保留了用id访问DOM这一非标准做法。事实上如今的主流浏览器,只有FireFox不支持这种做法,而Chrome,Opera,Safari,Mobile Safari都支持。

既然如此,我们不如让FireFox也支持,这样所有的浏览器都可以直接用id直接访问DOM,不仅快捷方便,减少了累赘的代码,更能提升运行的效率。

实现很简单,文档载入完成后查询带有id属性的元素,然后在window对象里添加其引用:

发邮件的网站源码,ubuntu双系统光标,云爬虫 插件安装,php jason,成都seo地址lzw

var list = document.querySelectorAll([id]);

for(var i = 0; i < list.length; i++)

{

if(list[i].id)

window[list[i].id] = list[i];

}

当然,只有FF需要这个hack,所以我们先检测下是否有其特征。最后精简下代码,利用数组遍历回调,即可压缩到简单的一行:

儿童测评源码,vscode怎样设置编码,鸿蒙和ubuntu,tomcat开启日志配置,sqlite数据库不为空,安装爬虫软件会不会被公司监控到,php 显示上传的文件,沛县seo优化推广费用,设计网站模板,用户登录网页模板lzw

if(mozHidden in document) [].forEach.call(document.querySelectorAll([id]),function(k){this[k.id]=k});

不过有个值得注意的地方,在文档载入尚未完成前 querySelectorAll,只能查询当前之前的元素。所以以上代码必须放在文档的末尾。而使用id访问,也必须在文档载入完成之后,否则就可能找不到这个元素。下面是个测试页面,在所有浏览器下都通过:

多级导航的数据库设计源码,ubuntu更新祓中断,tomcat最新消息,爬虫拉框,关于php的命名,初学seo的文章seo专员lzw

No document.getElementById

onload = function()

{

mytag.innerHTML = “Goodbye, document.getElementById!”;

}

if(‘mozHidden’ in document) [].forEach.call(document.querySelectorAll(‘[id]’),function(e){self[e.id]=e});

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。