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. Qcon 实时音视频专场:实时互动的最佳实践与未来展望

    互动直播.线上会议.在线医疗和在线教育是实时音视频技术应用的重要场景,而这些场景对高可用.高可靠.低延时有着苛刻的要求,很多团队在音视频产品开发过程中会遇到各种各样的问题.例如:流畅性,如果在视频过程 ...

  2. java中foreach循环用法详解

    前言 在前面的文章中,千锋壹哥给大家讲解了for.while.do-while三种循环结构,并讲解了如何跳出循环的几种方式,比如break.continue.return等.但是截止到目前,与循环相关 ...

  3. .NetCore中使用分布式事务DTM的二阶段消息

    一.概述 二阶段消息是DTM新提出的,可以完美代替现有的事务消息和本地消息表架构.无论从复杂度.性能.便利性还是代码量都是完胜现有的方案. 相比现有的消息架构借助于各种消息中间件比如RocketMQ等 ...

  4. Linux服务器MySQL操作总结

    目录 1. Navicat连接服务器MySQL 2. 如何查看MySQL用户名和密码 3. 修改MySQL的登录密码 4. 安装MySQL开发包(Centos7版) 错误:error 1045 (28 ...

  5. [操作系统/网络]Windows安装Openssh(scp / ssh等)

    1 文由 由于项目有这么一个数据同步需求: [业务建设系统方]在Linux上将Oracle的全量数据(.dmp文件)定时推送到[大数据平台建设方]中的一台Linux服务器上: 然后,[大数据平台建设方 ...

  6. 10.CAS实现单点登录

    1.总结: 昨天主要是了解和编写了CAS实现单点登录的代码: CAS实现单点登录的流程:用户访问资源服务器,先跳转到验证服务器验证身份通过后,认证服务器发送一个ticket给用户,用户拿着ticket ...

  7. LeeCode 319周赛复盘

    T1: 温度转换 思路:模拟 public double[] convertTemperature(double celsius) { return new double[]{celsius + 27 ...

  8. mysql导出csv

    1.正常查询 SELECT a.emp_no '员工号',b.seq '文章序号' from vote_records a INNER JOIN vote_content b ON a.vote_co ...

  9. Midjourney:一步一步教你如何使用 AI 绘画 MJ

    一步一步如何使用 Midjourney 教程:教学怎么用 MJ? 一.Midjourney(MJ)是什么? Midjourney是一款使用文字描述来生成高质量图像的AI绘画工具.这篇文章主要介绍了Mi ...

  10. 笔记:C++学习之旅---初识C++

    笔记:C++学习之旅---初识C++          博主也是一个新手,学习编程才一年左右,刚大学毕业不久,以前在学校学习的语言主要是C,本人是从嵌入式学起的!我现在从事的公司主要是C++,所以我也 ...