DOM

###BOM编程
Beowser Object Model 浏览器对象模型

window:表示窗口对象
navigator
location
history
screen

常用的方法和属性
alert() //系统提示语(弹窗);
使用场景:想要给用户提示信息,待确定的警告框。
window.alert(“你认为你是个人?”)

confirm ();
//用于一个带有“确定”和“取消”按钮的提示框
window.confirm(“你还是个人?”)

该方法会返回一个布尔值。
如果用户点击“确定”,则返回true;
如果用户点击“取消“,则返回false;

prompt();
//带有输入功能的提示框,返回一个字符串

let str = window.prompt(“请输入手机号”);
如果用户输入的是:123
console.log(str);//123

全局属性与window属性的区别

全局属性删除无效,依然可以使用
window属性删除有效。再次使用则为;

//ES6新增的let和const创建的变量不会成为window的属性
var i = 10;
var j = 20;
const z = 30;

alert(window.i)//10
alert(window.j)//20
alert(window.z)//30

//输出页面可视区域的尺寸
console.log(innerWidth);
console.log(innerHeight);

//输出浏览器的尺寸
console.log(outerWidth);
console.log(outerHeight);

注:每个浏览器的数据可能会有区别(略微的差异)

screen
//输出浏览器离屏幕(0,0)点的位置
console.log(window.screenLeft);
console.log(window.screenTop);

console.log(window.screenX);
console.log(window.screenY);

//获取元素的尺寸(宽度,高度)
console.log(JG445.offsetWidth);
console.log(JG445.offsetHeight);

//调整窗口位置(浏览器厂商的已经禁止)
//IE可以使用

window.moveTo(100,100);
window.moveBy(200,300);

moveTo是窗口距离屏幕的距离
moveBy是在moveTo基础上进行累加

//打开新窗口
//4个参数
//第一个参数:URL
//第二个参数:打开方式
//第三个参数:窗口大小
//第四个参数:是否取代历史记录中的当前页面

window.open(“test.html”,"_blank",“width=300,height=200,top=200”,“resizable=yes”);

有一个返回值,对象。
因此,就可以使用这个对象的方法close

let JG445 = window.open(“test.html”,"_blank",“width=300,height=200,top=200”,“resizable=yes”);

let test = funcion (){
JG445.close();
}

//创建要展示在页面的内容
let str = “pizza”;
//要展示在那个标签中
let BQ = document.getELementById(“JG445”);
//把要展示的内容添加到标签中
BQ.innerText = str;

【时间函数】

定时函数
格式:
setInterval(参数1,参数2)
参数1:方法或函数(必须以字符串形式)
参数2:设置的时间,即多少秒后调用参数1

例:
let first = setInterval(“abc()”,1000);
表示1秒后调用abc()这个方法。

注:
一个HTML可以引用多个 JS文件,每个JS文件又可以设置多个定时函数。
由于考虑到网络资源,当时间函数执行后,需要进行关闭。
例:
let first = setInterval(“abc()”,1000);
clearInterval(first);//关闭相应的定时函数

超时函数
格式:
setTimeout(参数1,参数2)
例:
let pizza = setTimeout(“alert(您已经超过3秒)”,3000);//3秒后进行参数1的调用
clearTimeout(pizza);//停止超时函数

//浏览器的名称
console.log(“appName:”+navigator.appName);
//浏览器的版本
console.log(’‘Version:’+navigator.appVersion);
//浏览器的语言
console.log(“language:”+navigator.language);
//产品名称
console.log(“Name:”+navigator.product);

【location】
属性:
例:
http://www.baidu.com/abc/jionus/index.html#123

hash 返回URL的锚部分,“#”号后面的内容//123

host 返回服务器的名字 //www.baidu.com

hostname 等价于host 但有时不会写www

pathname 返回URL后面的部分内容 abc/jionus/index.html

port 返回端口 :8080

search 返回?后面的内容

方法:
reload:重新加载当前文档(刷新);

location.reload();

replace()加载新文档(跳转新页面)
特点:等同于把原来的文档替换成新的文档,并且用的是一个窗口。
由于原来的文档和新文档用的是同一个窗口。所以,没有返回上一步的功能。

即:不能够返回上一步

location.replace("http://www.baidu.com");

assign()加载新文档(跳转新页面)
特点:等同于跳转到一个新的链接,窗口显示新链接的内容,不等同于替换。
所以,有返回上一步的功能。

location.assign("http://www.baidu.com");

【history】
取值为0:表示刷新当前页面

window.history.go(0);

取值为-1:返回上一个页面

window.history.go(-1);

取值为1:到达下一个页面

window.history.go(1);

到达下面一个页面(URL)
window.history.forward();

返回上一个页面(URL)
window.history.back();

【screen】
window.screen.width:返回当前屏幕宽度

console.log("屏幕宽度:"window.screen.width);

window.screen.height:返回当前屏幕高度

console.log("屏幕宽度:"window.screen.height);

###DOM

DOM:Document Object Model

文档对象模型

功能:可以操作HTML文档

【节点】
有一个页面,就会有一个DOM节点数。

DOM树结构中有以下三个节点组成:
1、元素节点:HTML的标签;
2、文本节点:标签包含的文本内容(元素内容)
3、属性节点:开始标签包含的属性

注:属性节点不属于元素节点的子节点

节点名称 nodeName
节点类型 nodeType
节点值 nodeValue

nodeName
元素节点                node.ELEMENT_NODE()          1
属性节点                node.ATTRIBUTE_NODE()        2
文本                   node.TEXT_NODE()             3

文档节点                node.DOCUMENT_NODE()         9

let Div = document.getELementByID(“abc”);//获取元素

Div.ELEMENT_NODE == 1;//判断是否为元素节点

console.log(Div.nodeName) //id div #text
console.log(Div.nodeType) //2 1 3
console.log(Div.nodeValue) //abc null 123


除了ByID是唯一值以外。
其他查找元素的内容,都会返回多个值。
多个值以类数组方式存储 (浏览器的后台会以NodeList进行展示)


【快速查找节点】
1、getELementByID通过ID名来获取元素

let aEle = document.getELementByID("a002");

2、getELementsByClassName通过类名来获取元素

let divEle = document.getELementsByClassName("b001")[0];

注:由于class的名字可以相同,最终可能获取到多个节点,因此,通过类名来获取元素的方式,会返回一个类数组。可以通过下标的方式进行相应内容的查找和展示。

3、document.getElementsByTagName();通过标签名来获取元素

let divEle = document.getElementsByTagName("div");

注:由于标签的名字可以相同,最终可能获取到多个节点,因此,通过类名来获取元素的方式,会返回一个类数组。可以通过下标的方式进行相应内容的查找和展示。

4、document.getElementsByName();通过name的值来获取元素

注:name是标签的属性名
let  divEle = document.getElementsByName("username");

通过CSS选择器进行查找

5、doucment.querySelector
6、doucment.querySelectorALL

注:
A:IE8及IE8以下的版本都无法识别
B:无法实时反馈元素
即:当页面进行了元素的添加或删除时,层次结构发生的改变。
而这两个方法是不会实时更新的,依然使用原来的层次结构。

【关系层次查找节点】

1、查找父节点
子元素标签.parentNode

例:

<section>
    <aside class="as1" id="as1">
    </aside>
</section>

let zedd = document.querySelector(“aside”);
//查找父级标签
console.log(zedd.parentNode);

注:父节点最多到document,再往上找就会返回null;

1、查找子节点
格式:父元素.childNodes

例:

<section>
    <aside class="as1" id="as1">
    </aside>
<section>

let pizza = document.querySelector(“section”)[0];
//查子节点
console.log(pizza.chil dNodes.length);//3

console.log(pizza.childNodes[0]);//#test

3、第一个子元素(firstChild)
let asiEle = document.getElementsByTagName(“aside”)[0];
console.log(asiEle.firstChild);//null 空白 文本内容

4、最后一个子元素(lastChild)
let asiEle = document.getElementsByTagName(“aside”)[0];
console.log(asiEle.lastChild);//null 空白 文本内容

5、找兄弟元素(后一个)
格式:元素.nextSibling

例:
let secEle = document.getElementsByClassName(“as1”)[0];
console.log(secEle.nextSibling);//test

6、找兄弟元素(前一个)
格式:元素.previousSibling

例:
let secEle = document.getElementsByClassName(“as1”)[0];
console.log(secEle.previousSibling);//test

【关系层次查找元素】

1、查找父元素
格式:子元素.parentElement

例:
secEle.parentElement

2、查找子元素
格式:父元素.children

例:
secEle.children
注:只获取元素节点(其他的文本节点,注释节点等都不会在其中)

3、查找第一个子元素
格式:父元素.firstElementChild

例:
secEle.firstElementChild

4、查找最后一个子元素
格式:父元素.lastElementChild

例:
secEle.lastElementChild

5、找兄弟元素(后一个)
格式:元素.previousEmentSibling

例:
sec.secEle.previousElementSibling

6、找兄弟元素(前一个)
格式:元素.previousElementSibling
例:
secEle.previousElementSibling

【节点的操作】

1、创建一个新节点到页面(添加一个新元素到页面)

格式:document.createElement(“标签名”);
格式2:父节点.createElement(“标签名”);

例1:
let divEle = document.createElement(“div”);

例2:
let divEle = document.getElementsByClassName(“sec1”)[0];
seEle.createElement(“div”);

2、创建节点内容(文本节点)
格式:标签名.createTextNode(“文本内容”);

例:
let divTN = document.createTextNode(“元素内容”);

3、添加新的元素节点
格式:父标签.appendchild(新节点);

例:
//创建一个带有文本节点的元素
let divEle = document.createElement(“div”);
let divTN = document.createTextNode(“JG445”);
divEle.appendChild(divTN);
//把新元素添加到页面中
bodyEle.appendChild(divEle);

4、添加到某个元素的前面

step1(第一步):先把这个元素获取
step2(第二步):获取父级元素
step3(第三步):把新元素添加到获取元素之前

格式:父元素.insertBefore(新元素,旧元素)

功能:会把新元素添加到旧元素之前

let divEle = document.createElement(“div”);
docNT = document.createTextNode(“toutou”);
divEle.appendChild(docNT);

//获取位置标签
let seEle = document.getElementsByClassName(“sec1”)[0];

let artEle = document.querySelector(“article”);
artEle.insertBefore(divEle,secEle);

5、删除一个节点
step1:获取父节点
step2:获取删除的节点
step3:删除节点
格式:父节点.remove(子节点);

例:
let artEle = document.querySelector(“article”);
let seEle = document.getElementsByClassName(“sec1”)[0];

artEle.remove(seEle);//删除所有节点

artEle.removeChild(seEle);//删除某一个节点

6、修改一个节点(替换)

step1:获取父节点
step2:父节点.replaceChild(新节点,旧节点);

例:
//获取父节点
let parEle = spanEle.parentElement;
//替换某一个元素
parEle.replaceChild(newEle,oldEle);

7、克隆节点(拓展)
浅克隆
divEle.cloneNode(false);
深克隆
divEle.cloneNode(ture);

8、创建注释节点
格式:document.creatCommnet(“这里添加注释”);
例:
let pizza = document.createComment(“这里添加注释”);
divEle.appendChild(divComm);//divEle是加注释的父元素

【文本的操作】
1、innerText(只获取当前页面显示的内容)
元素节点.innerText
例:
div.innerText
a>可以获取元素的文本内容
let divE = div.innerText;

b>并且可以设置元素的文本内容
let div.innerText = “JG445”;

2、innerHTML
元素节点.innerHTML
例:
div.innerHTML

a>可以获取元素的文本内容和子元素
let divE = div.innerHTML;

b>并且可以设置元素的文本内容和子元素
let div.innerHTML = “JG445”;

3、TextContent扩展
功能:获取文本内容
例:
div.Textcontent

【TextContent与innerText的区别】
innerText只获取在页面中显示元素的文本内容。
textcontent不仅可以获取在页面中显示元素的文本内容,
并且也可以把display为none的元素内容也获取到。

【属性节点的操作】

1、获取属性值
格式:节点名.getAttribute(“属性名”);

例: div.getAttribute(“id”);
注:获取div标签的id值

2、设置属性值

格式:节点名.setAttribute(“属性名”,“属性值”);

例:div.setAttribute(“id”,“JG445”);

3、创建一个属性节点
//创建属性名
let attEle = document.createAttribute(“name”);

//创建属性值
attEle.nodeValue = “QQ”;

//把属性节点添加到相应标签
inputEle[2].attributes.setNamedItem(attEle);

4、删除一个属性节点
格式:节点.removeAttribute(属性名);
document.removeAttribute(“name”);

5、判断当前标签是否存在某个属性
格式:节点.hasAttribute(属性名);
补充:判断是否纯在子节点 节点.hasNodeChild();

div.hasAttribute(“name”); //返回布尔值(T,F)

6、如何获取/修改多个类名的值(扩展)

【CSS操作】
1、对节点添加样式
格式:节点.style.CSS属性名 = CSS属性值
例:
h1Ele.style.color=“red”;
//由于在JS中连字符是有特殊含义的所以,不可以用
h1Ele.style.backgrondColor=“black”;

2、元素的尺寸
格式:节点.clientWidth
节点.clientHeight

3、元素的位置
格式:节点.offsetleft
节点.offsetTop

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值