dom对象就是操作网页的document

dom节点:

   整个文档是一个文档节点(document对象)
每个 HTML 元素是元素节点(element 对象)
HTML 元素内的文本是文本节点(text对象
每个 HTML 属性是属性节点(attribute对象)
注释是注释节点(comment对象)

dom查询:

获取元素节点
# getElementById() 通过id获取一个元素节点
# getElementByTagName() 通过标签名获取一组元素节点对象
# getElementByClassName() 通过类名获取一组元素节点对象
# getElementByName() 通过name属性获取一组元素节点对象

获取和设置document内容

.inhteml=newhtml
节点属性
attributes - 节点(元素)的属性节点
nodeType – 节点类型
nodeValue – 节点值
nodeName – 节点名称
innerHTML - 节点(元素)的内容
innerText -节点(元素)的文本值
导航属性:
parentNode - 节点(元素)的父节点 (推荐)
firstChild – 节点下第一个子元素
lastChild – 节点下最后一个子元素
childNodes - 节点(元素)的子节点
parentElement              // 父节点标签元素
children // 所有子标签
firstElementChild // 第一个子标签元素
lastElementChild // 最后一个子标签元素
nextElementtSibling // 下一个兄弟标签元素
previousElementSibling // 上一个兄弟标签元素
dom操作内联样式:
// 元素.style.样式名 = 样式值
// 如果css样式名中有 - ,如background-color,需要将这种样式名修改为驼峰命名法
box1.style.width = "300px"
box1.style.height = "300px"
box1.style.backgroundColor = "#f2f2f2" # 获取当前样式
box1.currentStyle.width
getCompyteStryle(box1.null)这个方法获取当前的样式,需要两个参数一个获取样式的参数,一个传递伪参数,一般都传递null
var obj=getComputedStyle(box01,null);
# 定义一个函数 getStyle
<script type="text/javascript">
/*
定义一个函数,用户获取指定元素的当前样式
两个参数:obj要获取的元素,name 要获取样式的名字
*/
function getStyle(obj,name){
if (window.getComputedStyle){
return getComputedStyle(obj,null)[name]
}else{
return obj.currentStyle(name)
}
}
window.onload=function (){
var box1=document.getElementById('box1');
var btn01=document.getElementById('btn01');
btn01.onclick=function (){
getStyle(box1,"width")
alert(getStyle(box1,"width")) }
}
</script>

文档节点:整个HTML文档

元素节点: HTML文档中的HTML标签;

属性节点:元素的属性

文本节点: HTML标签中的文本内容

<p id="pid">this is </p>
节点属性:

<script type="text/javascript">
// console.log(document);
//获取button对象
var btn=document.getElementById('btn')
// 修改按钮的的文本
btn.innerHTML='Ian button'
</script>
事件

把js直接写在HTML中: 造成代码结构耦合

/*
* 可以为按钮的对于事件绑定处理函数的形式来处理事件
*/
// 绑定回调函数,等等处理才执行的函数
btn.onclick=function (){
alert("你还点")
执行顺序问题解决“
 <script type="text/javascript">
/* 浏览器在加载一个页面的时候,是自上向下执行的 ,造成ls无法获取DOM对象,解决方式就是
引入onload,它会在整个页面加载完成触发 */
//添加onload触发事件
window.onload=function (){
var btn=document.getElementById("btn");
//为btn添加一个点击事件
btn.onclick=function (){
alert("还点击我");
}; };
</script>
DOM查询

获取文本 .innerHTML


				 //* 4 获取city节点所有li节点
var btn04=document.getElementById('btn04');
btn04.onclick=function () {
//*获取ID=city的节点
city = document.getElementById('city');
//获取city节点所有li的节点
lis = city.getElementsByTagName('li');
for (var i = 0; i < lis.length; i++) {
console.log(lis[i].innerHTML);
}
}
//5 获取city节点的所有子节点
var btn05=document.getElementById('btn05');
console.log(btn05.innerHTML)
btn05.onclick=function (){
city=document.getElementById('city');
//获取city节点的所有子节点
cds=city.childNodes;
console.log(cds.length);
for (var i=0;i<cds.length;i++){
console.log(cds[i]) }
// children返回子元素
cds2=city.children
console.log(cds2)
}
//6 获取phone节点第一个节点
var btn06 =document.getElementById('btn06')
btn06.onclick=function (){
var phone=document.getElementById('phone')
//获取第一元素
var fec=phone.firstElementChild
console.log(fec)
//获取第一个节点
var fc=phone.firstChild
console.log(fc)
//获取当前节点的子节点
var cn=phone.childNodes;
console.log(cn[0]) // 获取当前节点的最后一个节点
var lc=phone.latElementChild
console.log(lc)
}

定义函数实现定向功能:

	/*定义一个函数,专门用指定的元素绑定点击事件
参数:idStr 要绑定点击响应行的对象 id属性值
fun 事件的回调函数,当单击元素时,该函数将会被处理
*/
function myClick(idStr,fun){
var btn=document.getElementById(idStr);
btn.onclick=fun;}

	window.onload=function (){
//获取body标签
var body=document.body;
console.log(body);
var de=document.documentElement;
console.log(de);
//
all = document.getElementsByTagName("*");
console.log(all)
//根据元素的class属性查询一组元素节点对象
var a1=document.getElementsByClassName("a1");
console.log(a1[0])
//获取document.querySelector()需要一个选择器字符串作为参数,可以根据一个css选择器查询一个元素节点对象--
var div = document.querySelector(".a1 div")
DOM对象增删改

节点的元素的增删和改
<script type="text/javascript">
function myClick(idStr,fun){
btn=document.getElementById(idStr)
btn.onclick=fun;
}
window.onload=function (){
//1 创建一个"深圳"节点,添加到#city下
//执行点击btn01的的点击事件
myClick("btn01",function (){
//创建li元素的节点创建一个元素节点对象,将创建好的对象作为返回值
var li=document.createElement('li')
console.log(li)
// 建一个文本节点对象,并返回新的节点
var sz=document.createTextNode("深圳")
console.log(sz)
// 将text设置为li的子节点
// appendChild()向父结点中添加子节点-->
li.appendChild(sz)
console.log(li)
//获取city的节点
var city=document.getElementById('city')
city.appendChild(li)
console.log(city)
})
//2 将"深圳"节点添加到#bj前面
// .insertBefore(插入的子节点,插入位置的子节点)在指定的子节点前插入新的子节点
myClick("btn02",function (){
//
var li=document.createElement("li")
var text=document.createTextNode("深圳")
li.appendChild(text)
var city=document.getElementById("city")
var bj=document.getElementById('bj')
city.insertBefore(li,bj)
console.log(city) })
//3 使用"深圳"节点替换#bj节点 .replaceChild(A,B) 用A节点替换B节点
myClick("btn03",function (){
var li=document.createElement("li")
var text=document.createTextNode("深圳")
li.appendChild(text)
var city=document.getElementById("city")
var bj=document.getElementById('bj')
city.replaceChild(li,bj)
})
//4删除#bj节点 removeChild(bj)删除子节点
myClick("btn04",function (){
var city=document.getElementById("city")
var bj=document.getElementById('bj')
// city.removeChild(bj)
bj.parentNode.removeChild(bj)
})
//5读取#city内的html代码
myClick("btn05",function (){
var city=document.getElementById('city')
alert(city.innerHTML)
})
//6设置#bj内的html代码
myClick("btn06",function (){
var bj=document.getElementById('bj')
bj.innerHTML="昌平"
})
//7创建一个"顺义"节点,添加到#city下2
myClick("btn07",function (){
var city=document.getElementById("city")
var li= document.createElement("li")
li.innerHTML="顺义"
city.appendChild(li)
})
}
</script>
</head>

记录的增删改查

// 单击响应的函数
function dela(){
//点击一行获取 改行指向,获取父节点的父节点;
var tr=this.parentNode.parentNode;
var name=tr.children[0].innerHTML
if(confirm("确认删除"+name+"吗?")) {
tr.parentNode.removeChild(tr)
}
// 点击超级链接后,会跳转,去掉
return false;
//1 点击触发删除的
window.onload=function (){
// 1.1 //点击超链接,删除一个员工信息
//获取标签a节点
var alla=document.getElementsByTagName('a')
// 遍历a节点,为每个超级链接绑定一个单击的响应函数
for (var i=0;i<alla.length;i++) {
alla[i].onclick = dela;
} // 点击提交,把输入框记录增加表格中 //2 点击提交按钮,增加记录
}
//2.1 首先获取提交按钮的提交点击事件回调函数 var addbtn=document.getElementById('addEmpbutton')
addbtn.onclick=function (){
// 获取input
//2.2获取所有input标签
var namelist=document.getElementsByTagName('input')
//2.3 创建tr元素
var tr=document.createElement('tr')
// 2.3 读取input内容并创建td标签,添加文本,通过appendChild添加tr
for (var i=0;i<namelist.length;i++){
console.log(namelist[i].value);
var td=document.createElement('td');
td.innerHTML=namelist[i].value;
tr.appendChild(td);
namelist[i].value=""
}
//2.4 创建td 标签和a标签
var td=document.createElement('td');
var a =document.createElement('a'); var delText=document.createTextNode("Delete");
a.appendChild(delText)
td.appendChild(a)
tr.appendChild(td);
a.href="javaScript"
a.onclick =dela;
var et=document.getElementById("employeeTable");
var tb=et.getElementsByTagName("tbody")[0];
tb.appendChild(tr); }

dom 操作 css

js有关dom操作学习的更多相关文章

  1. js的dom操作(整理)(转)

    js的dom操作整理(整理)(转) 一.总结 一句话总结: dom操作有用原生js的dom操作,也可以用对js封装过的jquery等插件来来更加方便的进行dom操作 1.dom是什么? 对于JavaS ...

  2. js的DOM操作整理(整理)

    js的DOM操作整理(整理) 一.总结 一句话总结: dom操作有用原生js的dom操作,也可以用对js封装过的jquery等插件来更加方便的进行dom操作 1.dom是什么? 对于JavaScrip ...

  3. JS的DOM操作及动画

    JS的DOM操作DOM:Document Object ModelBOM:Bowers(浏览器) Object Model找到元素:var a=document.getElementById(&quo ...

  4. JS的DOM操作语法

    整理了一下JS的DOM操作语法,这里做下记录. <!DOCTYPE html> <html> <head> <meta charset="utf-8 ...

  5. JS的DOM操作 - 你真的了解吗?

    摘要 想稍微系统的说说对于DOM的操作,把Javascript和jQuery常用操作DOM的内容归纳成思维导图方便阅读,同时加入性能上的一些问题. 前言 在前端开发的过程中,javascript极为重 ...

  6. 原生js封装dom操作库

    var utils = (function(window) { var flag = "getComputedStyle" in window; function win(attr ...

  7. 5月16日上课笔记-js中DOM操作

    一.DOM操作 DOM节点的操作 增加 删除 修改 节点的信息: nodeName 获取节点的标签名 parentNode 获取父节点 childNodes IE忽略回车换行,chrome回车换行是文 ...

  8. js函数 DOM操作

    回学校了两天请了两天假,数组和方法的内容周末一定补上! 今天介绍一下JavaScript函数 Function 一.基础内容 1.定义 函数是由事件驱动的或者当它被调用时执行的可重复使用的代码块. f ...

  9. 总结js常用的dom操作(js的dom操作API)

    转载:https://www.haorooms.com/post/js_dom_api 前言 很多同学用惯了jquery操作dom,让他们用js操作的时候,常常力不从心,本文总结了常用的js的dom操 ...

  10. js常用DOM操作

    在博客园看到了苏夏写的常用DOM整理文章,地址:http://www.cnblogs.com/cabbagen/p/4579412.html,然后抽时间都试了一下这些常用的DOM操作.在这里记录一下. ...

随机推荐

  1. Kakao Brain 的开源 ViT、ALIGN 和 COYO 文字-图片数据集

    最近 Kakao Brain 在 Hugging Face 发布了一个全新的开源图像文本数据集 COYO,包含 7 亿对图像和文本,并训练了两个新的视觉语言模型 ViT 和 ALIGN ViT 和 A ...

  2. C++/Qt网络通讯模块设计与实现(四)

    在C++/Qt网络通讯模块设计与实现(三)中提到了一个概念,即接受者所依附的线程:关注我微信公众号的技术朋友留言对该概念还是不解,这节就单独讲述这个概念的理论与实际应用,这种应用无处不在,因为与Qt的 ...

  3. 浅谈Array --JavaScript内置对象

    Array --JavaScript内置对象 描述 可以用一个变量存储多种数据类型的Array对象,Array不是关联数组,不能使用字符串作为索引访问数组元素,需要使用非负整数的下标访问数组中的元素. ...

  4. MongoDB基础知识梳理

    简介 MongoDB 是由 C++ 编写的开源 NoSQL 和基于文档的数据库.MongoDB 提供了面向文档的存储方式,操作起来比较简单和容易,支持"无模式"的数据建模,可以存储 ...

  5. 在已有的vue项目中添加单元测试模块

    package.json 添加新命令 "test": "jest",下载包: "jest": "^26.6.3", &q ...

  6. innerHTML和outerHTML区别

     1.innerHTML <body> <p>你好</p> <div id="test"><h5>就是喜欢你</h ...

  7. 如何快速在Ubuntu上搭建python环境?

    如何快速在Ubuntu上搭建python环境? 一.准备好python源码包 使用curl命令获取python源码包的过程很缓慢且容易失败,因此提前去官网下载好后放在本地是最好的办法. 二.启动镜像并 ...

  8. 大语言模型快速推理: 在 Habana Gaudi2 上推理 BLOOMZ

    本文将展示如何在 Habana Gaudi2 上使用 Optimum Habana.Optimum Habana 是 Gaudi2 和 Transformers 库之间的桥梁.本文设计并实现了一个大模 ...

  9. 面试题:JS如何最快的执行垃圾回收机制

    因为没看见答案,所以也不知道对不对. JavaScript 的垃圾回收机制是由 JavaScript 引擎自动管理的,通常情况下我们无法控制垃圾回收机制的执行时间和频率. 然而,我们可以采取一些优化策 ...

  10. Redis(七)缓存穿透、缓存击穿、缓存雪崩以及分布式锁

    应用问题解决 1 缓存穿透 1.1 访问结构 正常情况下,服务器接收到浏览器发来的web服务请求,会先去访问redis缓存,如果缓存中存在数据则直接返回,否则会去查询数据库里面的数据,然后保存在red ...