JS学习分享

134 阅读4分钟

一、JavaScript七四由三部分组成:

1.ECMAScript(3/5/6)-核心语法:语法很关键-内功心法

2.DOM-Document Object Model:文档对象模型,外功招式-操作文档(html/css) 列如绑定点击事件、和鼠标划过事件,js操作html/css

3.BOM-Browser Object Model:浏览器对象模型,外公招生-操作浏览器(相对较少)-兼容性问题 列如前进、后退、刷新

二、DOM概述:文档对象模型,外功招式-操作文档(html/css)

DOM树:DOM将HTML看做了是一个倒挂的树状结构:(html->1.heade 2.body->heade下面是meta title .body 下面是自己创建的元素)树根其实是一个叫做:document的对象。

document的对象:不需要我们创建,一个页面自带一个document对象,由js解释器自动创建 在页面能够成功输出,包含了HTML以及以下的全部结构

作业:只要是对象一定有两个东西(属性和方法):提供了我们找到元素和操作元素的方法

三、 查找元素:

1.通过HTML特性去查找元素

1.通过ID查找元素:

var elem=document.getElementById("id值");书写不方便我就拿个变量保存起来,方便使用。

特殊:

1.如果有多个相同的id,只会找到返回第一个-id是唯一不重复的
2.*返回的结果:<li id="li">油条</li>,这个样子才能称之为叫做一个DOM元素/节点/对象,才可以用于对象操作
3.不准用这个方法-我们把Id留给后端使用,而且一次只能找到一个元素

2.通过标签查找元素:

var elems= document.getElementsByTagNamey("标签名")。此时的Element是复数说明是多个,并且普通的变量不可能保存住多个元素,所有一定是一个数组.找到所有的此标签,因为你是从document树根开始查找的,找到所有的此标签元素

特殊:

1.返回的结果:不是一个DOM元素/节点/对象,是不能直接用于任何操作的。是一个类数组对象对象,输出时数组是没有HTMLCollection
解决:要么用下标拿到某个,要么用遍历拿到每一个
2.*parent:代表的是你已经找到的某个父元素 var elems=标签名的父元素( parent).getElementsByTagNamey("标签名")。

3.通过class名查找元素:

var elems=document/parent.getElementsByClassName("class名);

特殊:

1.返回的结果:不是一个DOM元素/节点/对象,是一个DOM集合,是不能直接做任何操作的
解决:要么用小标拿到某个,要么用遍历拿到某个
2.*parent:代表是你已经找到的某个父元素

2.通过关系获取元素:前提:至少先找一个元素:

1.父元素:elem.parentNode;-单个元素

2.子元素:elem.children;-集合:集合不能直接做操作 如果写成childrenNode会将换行空格输出text,我们不需要对空格做操作

3.第一个儿子:elem.firstlementChild; 如果写成firstChild只会找到空格text

4.最后一个儿子:elem.lastElementChild;

5.前一个兄都:elem.previousElementSibling;如果写成previousSibling也只会找到空格

6.后一个兄弟:elem.nextElementSibling;

单个元素找到就是单个元素,但是没找到是null。多个元素找到了是一个集合,但是没有找到是[]

四、操作元素:<div class id title href style="样式“>内容</div> <div></div>叫做标签,不是元素、 class id title href style 称为HTML属性 全部一个我们才称之为元素

1.内容:

1.innerHTML:获取或设置元素的内容部分,并且能够识别标签

获取:elem.innerHTML;

设置:elem.innerHTML="新内容";

2、innerText:获取或设置元素的文本部分,不能识别标签

获取:elem.innerText;

设置:elem.innerText="新文本";

以上两个操作都是针对

3.value:获取或设置input的内容部分

获取:input。value;

设置:input。value="新文本";

2.属性:

1.获取属性值:elem.getAttribute("属性名");简化版:elem.属性名;

2.设置属性值:elem.setAttrbute("属性名","属性值");简化版:elem.属性名="新属性";

简化版虽然简单,但是有缺陷:

1.calss必须写成className,因为es6变成了关键字

2.只能操作标准属性,不能操作自定义属性

建议:优先使用简化版,简化版满足不了,再用复杂做补充

3.样式:

样式有三种使用方式:

1.内联

2.内部

3.外部-符合内容html与样式css与行为js的分离原理

二阶段:更喜欢操作内联样式

1.内联的优先级最高-保证我们js写的样式必然生效

2.只会操作当前元素-不会牵一发而动全身

如何:

获取:elem.style.css属性名;

设置:elem.style.css属性名="css属性值";

特殊:

1.设置css属性名如果有横线要去掉横线,变为小驼峰命名法。列如:dl.style.border-radius=50% 要写成 borderRadius 在js中"-"表示减的意思

2.获取只能获取内联样式-忍忍就过了

获取:往往用于判断

设置:其实就是修改

绑定事件:

符合内容html样式css与行为js的分离原理

单个元素:

elem..onclick=function(){

this->就是绑定事件的这个元素

}

多个元素:

for(var i=0;i<elems.length;i++){

elem..onclick=function(){

this->就是绑定事件的这个元素

}

}