注意JS在是编程语言:在赋值给HTML的元素属性的时候需要用到字符串的拼接等的知识
目录
insertBefore(child,指定元素) 指定在父级的哪个子级前面插入元素:
文档对象模型(documentobjectmodel,简称dom),是w3c组织推荐的处理可扩展标已语言(html或者xml)的标准编程接口。
w3c已经定义了一系列的dom接口,通过这些dom接口可以改变网页的内容,结构和样式。
DOM获取元素后可以在一个元素中操作别的已经获取的元素。
获取的元素是一个对象的集合是可以进行遍历的
注意根据id则需要将script放在标签之后(后续有方法放在前面)
注意返回的数据是一个对象
使用getElementsByTagName()方法可以返回带有指定标签名的对象的集合。
动态指的是:当对象数据发生变化,DOM获取的也会变化。
实现获取特指ol中的li但是一般这种情况会考虑用id来获取
同样和id一样目前需要写在标签之后。
返回值该元素对象的内容
body,html元素的获取。
事件他是会判断触发事件的类型。
传统事件的形式,只能添加一种形式,后面的会覆盖前面的
事件源:事件被触发的对象
事件类型:如何触发 什么事件,如划过,点击...
事件处理程序: 通过函数赋值的方式进行完成。
流程:
1.获取事件源
2.注册事件(绑定事件)
3.添加事件处理程序(采取函数赋值形式)
这个焦点指:相当于选中,如搜索框被选中就是获取焦点
也存在foucus方法
注意一些事件可以在实际中不需要进行点击等操作,也就是说不一定需要有注册事件。但是这个事件一定会是直接展示的。
element是元素(看DOM的分布)
识别指的是,会将标签隐藏(标签是不会输出的。)
特殊用法:
即可以作为添加元素的方式,但是他是以字符串的形式进行添加的
如图片的改变
案例:随着时间改变图标吗
this指向的是调用函数的调用者。
JS修改后添入行内样式里。
案例:循环精灵图
注意这里的位置书写时的”格式“
焦点案例:
change是已经写好的类名,类名选择器中有格式的修写。
注意类名样式操作:是直接进行覆盖的。
若想保留原来的,可以采用多类名的写法。
案例:密码框提示信息。(类名的改变)
下拉菜单案例:当父类进行onmouseover(鼠标经过) 是将子类元素的dispaly设置为
block现实/none隐藏。 onmouseout(鼠标离开)
案例:点击换皮肤
案例:表格隔行换色
表单全选和单选按钮 反选:
全选影响单选:
单选影响全选:
从上面例子可以看出同样是获取复选框是否选中,js的获取值是布尔值,即true 或者 false,而jQuery的获取值则是checked或者undefined
自定义属性:自己命名的仅作为程序员编写时方便等
class比较特殊两种方式的设置格式不同。
案例:
详情页:
自定义给属性,获取属性用循环赋值,绑定事件后。用排他思想,当谁点击时,其他的元素都隐藏,自己进行显示
属性目的:是为了保存并使用数据。有些数据可以 保存到页面中而不用保存到数据库中。
h5规定自定义属性data-开头做为属性名并且赋值。
但是只能获取以date- 开头的。
dataset是一个储存了所有,以date开头的自定义属性对象的集合
还是为了获取元素,但一般需要先获取一个元素
同时也可以知道可以通过一个已经获取的元素获取一些部分可以获取的元素
相当于元素上调下调。
nodeName(节点名称) nodeValue(节点值) nodeType(节点类型)
最常见的节点是父子层的节点:
只能够得到距离它最近的父级节点。
获取父级元素下子元素的长度。
得到的所有子类的节点包括:元素节点,文本节点等等
该方式,只会获取子元素节点。不会获取文本节点等。
该方式更多使用。
同样存在的缺点是,会获取返回所有的节点。
先获取多个子元素的父级的对象集合,然后访问第n个元素
下拉菜单案例:
使用ul li作为一个单元进行下拉式子的形式。
方式三:
根据元素节点的nodetype为1来进行的。
需要先进行创建元素,然后使用添加元素,添加在指定位置。
该方式实现的情况是用子类形式:
注意下面这种方式:删除的是子节点。注意语法
这个子元素的删除,也可以先通过标签等获取指定的元素之后再放进再去进行删除。
或者直接使用父级.children[n]
还有其他删除的方案。
注意删除的语法是父亲里的孩子(因为既要删除内容又要删除链接,不如直接删除li)
案例:动态生成表格
注意这里的dates[i] [k]
i的产生是由于获取对象 ,[的获取是获取属性名]之后获取属性值
这个就出现了问题他会出现重绘
他是进行拼接字符串的形式的。
参考上文修改内容属性
正常使用参考上文添加节点
该方式是进行创建的形式实现的
效率更高效(比innerHTML)
事件的触发会判断触发事件的类型。
注意:listener可以直接写为funtion( ){ } 或者调用写好的函数名即可(不需要括号)
优点在于,一个元素可以添加多个监听事件。
当触发行为是一样的时候会先后显示。
但事件监听又产生冒泡等的影响需要考虑设置方案
ie9之前的可以使用
一般现在不在考虑直接启用较高市场普遍的浏览器内核版本
触发后,将事件赋值为null
对于event的:
对于attach的:
即事件传播的过程
即:确定的是事件传播的路径 ,以至于影响事件的执行过程
此流程也会影响产生点击一个,导致多个(父子级)点击事件的产生
如:如果父子级都绑定了同一种触发事件(如都是click)就会影响触发
事件对象相当于形参,他是事件的相关的信息
ie8以上是如下:
1.event就 就是一个事件对象写到我们侦听函数的小括号里面当形参来看
2.事件对象只有有了事件才会存在,它是系统给我们自动创建的,不需要我们传递参数
3.事件对象是我们事件的一系列相关数据的集合跟事件相关的 比如鼠标点击里面就包含了鼠标的相关信息,鼠标坐标啊,如果是键盘事件里面就包含的键盘事件的信息比如半 口判断用户按下了那个键
ie8以前:
window.event
解决兼容性问题,一般不需要考虑
e.target是返回触发该事件的对象
this返回的是绑定该事件的对象
currenttarget和this的返回值一样
阻止如:链接的跳转
按钮的提交等基本默认行为
注意该类代码是要写在function里的
但注意的是阻止冒泡只能够影响两个层级的关系,如果多余2层则需要多个写
方式一:
对于标准写法的阻止
此时,当点击子类的时候,父类就不会触发相同触发源的事件
方式二:
对于低版本的阻止冒泡的触发
在jQuery中叫事件委派:
如此时:即使子元素li没有点击事件,但由于监听方法的使用冒泡影响到了父元素的监听事件。
利用此,甚至可以父类的事件改变子元素的效果
contextmenu是右键
selectstart是选中
由此可以制作点击效果等。
但是需要注意的是:获取的坐标是数字,在使用坐标产生点击等效果的时候需要有单位
但是需要注意的是:获取的坐标是数字,在使用坐标产生点击等效果的时候需要有单位
注意默认的时候定位的是图片的左上角使得鼠标会在效果的左上角,如果需要在中间的话,需要减去图片宽度高度的一半。
这个按下键,只要一直被按,就会一直触发
注意keyup和keydown返回的值不区别大小写。
keypress区分大小写。
案例: 输入框对应放大提示框