读书笔记-javascript dom-2

来源:互联网 发布:apache 禁止目录 编辑:程序博客网 时间:2024/05/18 02:24

1、”javascript:”伪协议
“真”协议用来在因特网上的计算机之间传输数据包如HTTP协议(http://)、FTP协议(ftp://)等。伪协议则是一种非标准化的协议。”javascript:”伪协议可以让我们来调用javascript函数—这里不会发生跳转

<a href="javascript:test()">链接到百度</a>

2、内嵌事件处理函数
当标签中的一些属性没多大用处时,可以调用其他属性来对事件进行处理

<a href="#" onclick="test();return false;">别想跳转了</a>//上面的HTML指令使用了return false语句所以这个链接是不会发生跳转。

“#”符号是一个仅供文档内部使用的链接记号
3、css能做到将web文档结构和样式分离开来
4、关于javascript引入外部文件问题
如果javascript文件是从HTML文档的<head>部分用<script>调用的,它将在HTML文档之前加载到浏览器里。同样,如果<script>标签位于文档底部</body>之前,就不能保证哪个文件最先结束加载(浏览器可能一次加载多个)。
因为脚本加载时文档可能不完整,所以模型不完整,没有完整的DOM,getElementById等方法就不能正常工作。因此必须让这些javascript代码在HTML文档全部加载到浏览器之后马上开始执行—>HTML文档全部加载完会触发一个事件。文档将被加载到一个浏览器窗口后,document对象又是window对象的一个属性。当window对象触发onload事件时,document对象就存在了。
5、要使脚本起作用(有的浏览器不支持),则需要向后兼容,做相应的对象检测。将方法打包好,使用if语句对这个方法进行判断是否存在,就可以把不支持的浏览器检测出来
如:

//判断该文档对象是否含有getElementById的方法或者属性if(document.getElementById){    //代码块}或if(!getElementById){    return false;}或if(!getElementById)  return false;//如果需要判断多个属性或者方法是否存在,则if(!getElementById ||!getElementsByTagName) return false;

6、尽量少访问DOM和尽量减少标记。因为访问DOM方式对脚本性能会产生非常大的影响。比如在使用 document.getElementsByTagName(”p”) 会在执行这句时浏览器会遍历整个DOM树,从中查找可能匹配的元素。当使用了两次这样的代码,会浪费一次搜索,更好的办法是把第一次搜索的结果保存在一个变量中,然后可以在循环里操作了。
例:

val aLi=document.getElementsByTagName("li");for(var i=0;i<aLi.length;i++){     alert(aLi[i].innerHTML);}
原创粉丝点击