前端(八)

365 阅读4分钟

一散装js知识点

js和java一样也有封装、继承、多态的特性,关于这些特性我们后边再叙述。这里先说一下关于js一些零散的知识点:

  • js可以遍历json或者对象:
for (var 变量 in 对象) {
}
  • js方法调用不检查参数类型,不检查参数数量 ,返回值可以是函数

  • 属性提升写法: var a = 1; 不提升写法 a= 1;方法提升写法:function a(){} ;方法不提升 写法:var a = function(){}

  • this是谁?this关键字永远指向函数(方法)运行时的所有者

  1. 以函数的形式调用时,this永远都是window。比如fun();相当于window.fun();
  2. 以方法的形式调用时,this是调用方法的那个对象
  3. 以构造函数的形式调用时,this是新创建的那个对象
  4. 使用call和apply调用时,this是指定的传递过来的那个对象
  • js方法可以看成构造函数,也同时是类名,类体就是构造方法的方法体
  • 内置对象:Array、Math、Date等
  • js常用事件:onclick 、onmouseover 、onmouseout
  • 基本数据类型也有包装类,和java一样自动装包和卸包

二DOM操作

节点分为:标签节点、属性节点、文本节点。他们对应的nodeType 分别是1、2、3。

操作标签节点

获取标签节点 :

  • 直接通过document提供的API获取标签节点

           document.getElementById("box1")
  • 通过获取到的节点内的属性获取其他标签节点

           获取父节点:节点.parentNode。还可以获取任意节点。

创建标签节点:

  • 通过document提供的API创建标签节点

           document.createElement("标签名");

插入标签节点:

	父节点.appendChild(新的子节点);
	父节点.insertBefore(新的子节点,作为参考的子节点)

删除标签节点:

	父节点.removeChild(子节点);

复制标签节点:

	要复制的节点.cloneNode();      

	要复制的节点.cloneNode(true);
  • 不带参数/带参数false:只复制节点本身,不复制子节点。

  • 带参数true:既复制节点本身,也复制其所有的子节点。

操作属性节点

获取属性节点:

         标签节点.getAttributeNode("属性名")

获取节点属性值:

	元素节点.属性名;
	元素节点["属性名"];
        元素节点.getAttribute("属性名称");

修改、添加节点属性值:

	元素节点.属性名=新值;
	元素节点["属性名"] = 新值;
	元素节点.setAttribute(属性名, 新的属性值);

删除节点属性:

	元素节点.removeAttribute(属性名);

操作文本节点

获取文本:

  • innerHTML:双闭合标签里面的内容(识别标签)。

  • innerText:双闭合标签里面的内容(不识别标签)。

document.getElementById("box11").innerHTML
document.getElementById("box21").innerText

修改文本:

document.getElementById("box11").innerHTML = 新内容(识别标签)
document.getElementById("box21").innerText = 新内容(不识别标签)

获取css属性方式

ele.style.width或者 ele.style["width"];缺点是只能获取或者赋值行内样式,如果像样获取class中写的样式怎么获取呢?

 function getStyle(ele, attr) {
    if (window.getComputedStyle) {
       return window.getComputedStyle(ele, null)[attr];
      }
       return ele.currentStyle[attr];
}

这个方法不管行内还是class中的css样式属性值都可以获取的到。


三DOM的事件传递过程

js事件传递分为捕获阶段、目标阶段、冒泡阶段。

捕获阶段就是:从外向内传递的过程。

冒泡阶段就是:内向外传递的过程。

目标阶段:事件在点击目标标签的时间段。

并且他们如果同时设置调用顺序是:先调用父标签捕获,再调用子标签捕获,先调用子标签冒泡,后调用父标签冒泡,特殊情况是在目标阶段:冒泡和捕获,谁的代码在前边谁先执行。

Event是一个事件函数内置对象,他包含了点击事件的所有信息,并且可以调用Event.stopPropagation()对事件进行拦截

四BOM

window对象是BOM的顶层(核心)对象,BOM中有一些开发者需要知道的属性和方法如下:

方法:

window.alert();	//不同浏览器中的外观是不一样的弹窗
window.open(url,target,param)//打开一个新窗口

window.close()//关闭自己的窗口

对象:

location对象:location.reload()重新加载

navigator对象:userAgent属性:系统,浏览器

history对象:

后退:

  • history.back()

  • history.go(-1):0是刷新

前进:

  • history.forward()

  • history.go(1)