DOM & 事件

2015-07-17  本文已影响0人  沿溪行
前言
 之前讲都是js的纯基本语法,表达式啥的,跟浏览器无关,可以使用node和控制台执行;
 往后讲的只有浏览器里才会有。
HTML的加载顺序
DOM API学习
DOM结构的操作
  1. 对象引用,相当于拉了个线,
    === 对象类型等完全一样,如果不是基础类型(字符串,数字),那就是同一个东西,修改一个另一个也会修改。
  2. 集合不是数组,但类数组。
    document.all[0] 是按照加载顺序取的,从上到下,从外到里依次加载
    document.getElemntBy系列
    document.referrer 从哪里来的URL,返回""或者url字符串
    document.lastModified 最后修改时间

![Uploading 1-sibling_578152.jpg . . .]
document.domain 当前url的域名,可以被修改,
但是只允许从二级修改到顶级域名(XXX.com, XX.cn, XXX.com.cn)

HTML DOM Element 对象

注意
HTML 是对XML的扩展,但是不全,所以有时候要查XML DOM参考手册文档

  1. .nextElementSibling IE6不支持,但有.nextSibling跟前者等价。例,需要用.nextSibling写兼容【大坑】
  2. 如果前者是肯定意义直接返回前者,否则就返回后者。如此逻辑可以使用下面的方式:return a || b //结果是精确的值,不是true、false,或运算的短路逻辑
    var a=1,b=2; a || b //1
    var a=0,b=2; a || b //2
    var a=null,b=2; a || b //2
  3. 在父的最前和最末位置分别插入
    parentNode.appendChild(newNode)
    parentNode.insertBefore(newNode,parentNode.childNodes[0])//不用children(不包含空白的text节点)
    after是有IE6兼容性问题的
    removeNode //移除节点
    cloneNode //复制节点
  4. 元素属性和css的操作
    • case 表达式 原因?
    • class操作
      css操作,提倡修改class来修改样式
      做一个忽闪忽闪的东西,可以锻炼思维
      通过以下方式修改所有的css样式
      main.style .backgroundColor = "red";
      dom.style[name] = value;//name是变量时,就不能再【点】了
      修改容易,获取.css样式表里的样式难:
      getComputedStyle(main)[backgroundColor]
      所以尽量不取.css里的样式进行对比。

25ke 1:08

事件,事件绑定的兼容见图片

事件代理

  1. 为啥阻止冒泡?如何阻止
    点击子不连带着触发父绑定的事件方法-阻止冒泡,而IE6下不用阻止冒泡
    停止事件传播:e.stopPropagation()

  2. 为啥绑定到父上?
    考虑性能消耗,如何一次绑定完全?还是要绑定上父上面
    target 是真正被点击的子标签非标准的则不是,log一下target,,怎么全删了?remove和removeChild的区别
    e.target || e.srcElement 分别代表(标准和IE浏览器)
    25ke 01:53

  3. 只是不从父main往上冒泡了,但是还会从子冒泡到他本身?

  4. 事件怎么全解绑了?
    移除只能一个个移除,首先把事件函数缓存起来。
    用for循环移除所有事件。没有统一的移除方法。

事件绑定原则

能只绑一遍,就不绑多遍,一次绑定,事件很金贵的

css小节
  1. 绝对定位的层级会较普通的高,但是使用relative的更高。可以用z-index调整
  2. 行内标签有float的可以设置宽高,总之脱离文档流的,都可以设置宽高
  3. 尽量使用百分比。
  4. 想对谁定位,要写,不然就是相对应body,
  5. 而且IE必须主动指定left:0;top:0;
  6. overflow:hidden;或者line-height:0;
  7. 把元素的所有style属性都改成默认的,方法:inner.style.cssText = "";但是IE就不支持
  8. 样式表里要杜绝写id

25ke 02:16
星级评分自己动手写。
模拟下拉框
事件绑定和选取是最常用的功能,写的多了就是在写jquery这样的框架
少使用鼠标,多用键盘

26ke 25min

   Q.create("div",{})?select.js
   对象.getAttribute("")//获取所有属性:id type class name
   或者对象.selected
   必须是表单元素,才能直接.value,.selceted;
   否则必须用.getAttribute("value")
   .tagName.toUpCase() === 'A'//因为会自己解析出来就转成大写,所以才。。
   ie6 不支持dispaly:block
   ie6 下 option 是大写

总结

ctrl+d对网友收藏
云香水识的简书
云香水识的runjs.cn
d3.js
webGL

表单操作
27-10min

上一篇 下一篇

猜你喜欢

热点阅读