js有关dom操作学习
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操作学习的更多相关文章
- js的dom操作(整理)(转)
js的dom操作整理(整理)(转) 一.总结 一句话总结: dom操作有用原生js的dom操作,也可以用对js封装过的jquery等插件来来更加方便的进行dom操作 1.dom是什么? 对于JavaS ...
- js的DOM操作整理(整理)
js的DOM操作整理(整理) 一.总结 一句话总结: dom操作有用原生js的dom操作,也可以用对js封装过的jquery等插件来更加方便的进行dom操作 1.dom是什么? 对于JavaScrip ...
- JS的DOM操作及动画
JS的DOM操作DOM:Document Object ModelBOM:Bowers(浏览器) Object Model找到元素:var a=document.getElementById(&quo ...
- JS的DOM操作语法
整理了一下JS的DOM操作语法,这里做下记录. <!DOCTYPE html> <html> <head> <meta charset="utf-8 ...
- JS的DOM操作 - 你真的了解吗?
摘要 想稍微系统的说说对于DOM的操作,把Javascript和jQuery常用操作DOM的内容归纳成思维导图方便阅读,同时加入性能上的一些问题. 前言 在前端开发的过程中,javascript极为重 ...
- 原生js封装dom操作库
var utils = (function(window) { var flag = "getComputedStyle" in window; function win(attr ...
- 5月16日上课笔记-js中DOM操作
一.DOM操作 DOM节点的操作 增加 删除 修改 节点的信息: nodeName 获取节点的标签名 parentNode 获取父节点 childNodes IE忽略回车换行,chrome回车换行是文 ...
- js函数 DOM操作
回学校了两天请了两天假,数组和方法的内容周末一定补上! 今天介绍一下JavaScript函数 Function 一.基础内容 1.定义 函数是由事件驱动的或者当它被调用时执行的可重复使用的代码块. f ...
- 总结js常用的dom操作(js的dom操作API)
转载:https://www.haorooms.com/post/js_dom_api 前言 很多同学用惯了jquery操作dom,让他们用js操作的时候,常常力不从心,本文总结了常用的js的dom操 ...
- js常用DOM操作
在博客园看到了苏夏写的常用DOM整理文章,地址:http://www.cnblogs.com/cabbagen/p/4579412.html,然后抽时间都试了一下这些常用的DOM操作.在这里记录一下. ...
随机推荐
- StyleGAN 生成 AI 虚拟人脸,再也不怕侵犯肖像权
目录 什么是 StyleGAN 如何使用 StyleGAN 下载项目 修改项目 MSVC 运行项目 运行结果 什么是 StyleGAN GAN 是机器学习中的生成性对抗网络,目标是合成与真实图像无法区 ...
- Java里的对象是咋回事
前言 在上一篇文章中,壹哥给大家介绍了Java中的类及其特点.创建过程等内容,相信你现在已经知道该如何创建一个Java类了.接下来在本篇文章中,壹哥会继续带大家学习面向对象中关于对象的内容.其实类和对 ...
- aspnetcore微服务中使用发件箱模式实例
aspnetcore微服务种服务之间的通信一般都有用到消息中间件,如何确保该服务的持久层保存创建的数据同时又把消息成功投递到了关联服务,关联服务做对应的处理. 下面就以一个简单的例子来演示实现方式之一 ...
- 把一个列表拆成N个子列表的四种方法
编程的方法往往不止一种,比如怎么把一个Python种的列表拆成N个子列表,我们可以很容易找到N种方法,也许这就是编程的魅力所在. 一.列表表达式法 这种方法最为简洁,不过可读性差一些 这个方法中,即使 ...
- Defi开发简介
Defi开发简介 介绍 Defi是去中心化金融的缩写, 是一项旨在利用区块链技术和智能合约创建更加开放,可访问和透明的金融体系的运动. 这与传统金融形成鲜明对比,传统金融通常由少数大型银行和金融机构控 ...
- Etherscan本地多文件开源(VScode)
项目创建 创建文件夹 mkdir Duckereum cdDuckereum 添加nodejs配置 npm init -y 安装依赖添加 npm install -D hardhat npm ...
- pandas安装1
Python 官方标准发行版并没有自带 Pandas 库,因此需要另行安装.除了标准发行版外,还有一些第三方机构发布的 Python 免费发行版, 它们在官方版本的基础上开发而来,并有针对性的提前安装 ...
- IDA 特征码生成和搜索脚本
最近比较忙,就少写两句,直接附上源代码,其中的细节点就不再赘述,如有疑问,请留言. 一共就是实现了两个函数,一个用于搜索特征码 (SearchPattern),一个用于生成特征码 (GenerateF ...
- 谷歌浏览器配置vue调试工具
1.下载调试工具 下载地址:Vue Devtools_6.1.4_chrome扩展插件下载_极简插件 点击推荐下载 2.解压下载的压缩文件: 3.打开chrome浏览器,进入chrome://exte ...
- [C++提高编程] 3.1 string容器
文章目录 3.1 string容器 3.1.1 string基本概念 3.1.2 string构造函数 3.1.3 string赋值操作 3.1.4 string字符串拼接 3.1.5 string查 ...