getElementById 是怎么实现的呀 肯定不是循环所有标签,我猜是使用类似java里的hashMap或者是为id建立了一个B树索引之类就像数据库里的id一样 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 根据指定的 id 属性值得到对象。返回 id 属性值等于 sID 的第一个对象的引用。假如对应的为一组对象,则返回该组对象中的第一个。 根据指定的 id 属性值得到对象。 这个是怎么找的我们调用document.getElementById('id')其实得到的就是一个js dom元素对象,这个是浏览器帮我们返回的一个对象句柄,浏览器在解析完一个html文档后会创建很多的dom js对象的,我们可以通过调用这些js对象的方法来操作这些对象对应的html元素; 这个可能浏览器不同不一样, 在生成DOM 时就添加到管理器里了像IE,chrome 的 document.all<button onclick="test()">test</button><script >var a=document.all,i=0;function test(){ document.body.insertAdjacentHTML('beforeEnd','<a id="a'+i+'" >'+i +'</a>'); alert( a["a"+i ].innerHTML );//通过 a 取到新生成的元素 i++}</script> 通俗点就是你自己new一个对象,可以根据方法得到这个对象;HTML被浏览器解析的过程就是初始化了很多对象,你直接用方法得到对象;这也是浏览器不一样,好多方法不兼容的原因; 比如我有100W个标签在页面上,当然dom树中也就有这100W个标签对象了,它们的id都不一样. 如果我用getElementById传了一个id去找, js引擎总不会直接循环这个100W个对象比较id属性吧? 不知道你明白我的意思没 急,js报错 意外地调用了方法或属性访问 是怎么回事啊? htmlarea 里面的内容全部选择和删除 谁推荐一下学习javascript的书, jQuery事件绑定问题 从数据库中读取并延迟加载图片 弹出窗口? 初学者提问,为什么老是提示 缺少对象啊! 有关复合查询的问题! 求格式转换:1000->1,000.00即千分位格式? 请问如何在JS中中文字符串如何比较? 求帮忙看一段代码。关于焦点图 JS闭包解除引用问题
像IE,chrome 的 document.all<button onclick="test()">test</button>
<script >
var a=document.all,i=0;
function test(){
document.body.insertAdjacentHTML('beforeEnd','<a id="a'+i+'" >'+i +'</a>');
alert( a["a"+i ].innerHTML );//通过 a 取到新生成的元素
i++
}
</script>
HTML被浏览器解析的过程就是初始化了很多对象,你直接用方法得到对象;这也是浏览器不一样,好多方法不兼容的原因;