JavaScript的Dom节点操作

预解析

function 声明的函数会预解析到顶部,而赋值式的创建函数是先解析这个变量到顶部,然后程序在执行时到该赋值函数时才会知道这个是赋值式函数,

a();//由于变量的预解析,不知道a是一个变量还是一个函数,所以输出a is not function
var a = function(){
    console.log(1);
};
a();//执行成功,输出1

而变量预解析是先解析变量,待代码执行到赋值时才会进行赋值

console.log(a);//变量的预解析,所以打印undefined
var a = 10;
console.log(a);//由于上面已经赋值,所以打印10

作用域

分为全局作用域和局部作用域

全局作用域:范围整个页面,只有当前页面关闭时,全局作用域才会失效

局部作用域:全局作用域中又划分出的小范围的作用域,函数内部可以创建局部作用域,到目前为止,也只有函数内部可以创建局部变量

当定义了一个全局a变量,而函数的局部作用域中也声明了a变量 如果在函数作用域中输出一下a 这个a输出的会是作用域中a的值,近水楼台先得月,就近原则。

当局部作用域中没有使用var定义 但是却有赋值,当你在外部调用这个函数,在全局中来进行使用这个变量时,他会把这个变量自动转换成全局变量

Web api

web api是一些预先定义的函数,

任何开发语言都有自己的API

API的特征输入和输出

API的使用方法(console.log())

js的组成

ECMAScript:语法约束标准

Dom:文档对象,页面上的东西称为文档对象

Bom:浏览器对象,窗口,

Dom文档对象模型

文档对象模型Dom(Document Object Model),

操作页面上的标签,属性,内容

 

Dom节点

HTML文档中的每个成份都是一个节点

整个文档是一个文档节点

每个HTML标签是一个元素节点

包含在HTML元素中的文本是文本节点

每一个HTML属性是一个属性节点

注释属于注释节点

//获取整个html文档
console.log(document.documentElement);
//获取头部head
console.log(document.head);
//获取主体body
console.log(document.body);
​
//获取body标签
var body = document.body;
//获取标签中的第一个元素
var div = body.firstElementChild
//获取该元素的文本信息
var div2 = body.firstChild
//获取标签中的最后一个元素
var div3 = body.lastElementChild
//获取该标签的后一个兄弟
var div4 = div.nextElementSibling
//获取该标签的前一个兄弟
var div5 = div.previousElementSibling
​
//通过函数来获取元素
//getElementById("id名") 通过id获取元素
document.getElementById("uname")
//getElementsByClassName("类名") 通过类名获取一组类名相同的标签
document.getElementsByClassName("item")
//getElementsByName("属性值")  通过那么属性值来获取一组标签
document.getElementsByName("sex");
//getElementsByTagName("标签名")   通过标签名获取一组标签
document.getElementsByTagName("div")
​
//获取第一个所匹配的标签   可以是id(#id名)、类(.类名)、标签等
document.querySelect("input[属性]","属性值")
document.querySelect("div")
//获取所有的所匹配元素
document.querySelectAll("div")
​
//可以通过标签的id值来获取标签 不需要引号
console.log(id名)

操作节点

创建节点

var li = document.createElement("li");

向节点内添加内容

li.innerHTML = "这是一个新添加的标签"

修改内容还可以识别标签 innerHTML;

修改内容但不可识别标签 innerText;

添加节点

将创建的节点添加到ul中

ul.appendChild(li)

删除节点

ul = document.querySelect("ul")

li = ul.lastElementChild()

ul.removeChild(li)

删除所有节点

ul.remove() 删除元素本身以及所有子元素

操作属性节点

第一种获取属性方式(标签自带属性),通过元素名.属性名

首先需要获取标签节点在进行.value/.type

更改属性值

直接input.value = "XXX"

可直接获取修改

获取自定义属性

元素.getAttribute("自定义属性名")

设置自定义属性

元素.setAttribute("自定义属性名","属性值")

添加自定义属性前 建议在自定义属性名格式为:data-XXX

元素节点.dataset //获取元素以data-为前缀的属性 返回为对象类型 获取对象值的两个方法obj.XXX obj['XXX'];

元素节点.attributes //获取的是标签的自带属性以及自定义属性

小练习

全选 单选

使用js设置css样式

元素.style["width"]

元素.style.width

比如background-color这个不能用style.background-color来选中,需要遵循驼峰命名法style.backgroundColor。

使用style属性只能获取到行内style属性里设置的css样式,使用style属性获取样式时,该样式可读可写

元素.className可以获取到class的值

getComputerStyle(元素).width 获取该样式 只可读,不可更改 不常用

元素.classList.remove("") 移除指定类名

元素.classList.add("") 添加指定类名

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值