dom元素

如何获取dom元素
dom 全称是document object model 文本对象模型 简称dom元素,dom就是html元素
获取dom元素的时候需要注意什么,注意dom元素是否初始化(是否已经存在)

一.四种动态获取dom的方法
1.通过class 类名称获取元素 返回的是一个HTMLCollection集合
document.getElementsByClassName() var btn=document.getElementsByClassName("list");console.log(btn[0]);
2.通过元素的name属性获取元素 返回的是一个NodeList集合
document.getElementsByName() var btnname=document.getElementsByName("buttoninfo");console.log(btnname[0]);
3.通过元素的id获取 返回的是一个对象
document.getElementById() var btnid=document.getElementById("btn");//返回的是一个对象 console.log(btnid);
4.通过标签名称获取 返回的是一个HTMLCollection集合
document.getElementsByTagName() var ele=document.getElementsByTagName("button");console.log(ele[0]);

二.四种静态获取dom的方法
1.参数是css选择器 返回的是一个单个对象
document.querySelector(); var btnc=document.querySelector(".list");console.log(btnc);
2.参数是css选择器 返回的是一个NodeLIst集合列表
document.querySelectorAll(); var btnq=document.querySelectorAll("#btn");console.log(btnq);
3. 获取body元素固定对象获取
document.body console.log(document.body);
4.获取HTML元素
document.documentElement console.log(document.documentElement);

dom元素创建
用来代码添加一个元素到网页
var btnlist=document.createElement(“button”);
btnlist.name=“buttoninfo”;
btnlist.className=“list”;
document.body.appendChild(btnlist); 将btnlist加到网页中
获取元素的class
console.log(ele.className);
获取元素的类的集合
console.log(ele.classList);
给元素添加类
ele.classList.add(“btninfo”);
移除类
ele.classList.remove(“btn”);
检测是否包涵某个类 返回值是true false
console.log(ele.classList.contains(“btn”));
输出类个数
console.log(ele.classList.length );
类别的切换,根据第二个参数 true添加 false删除
console.log(ele.classList.toggle(“btn”,false));

操作dom元素
js操作dom,只能单个操作,不能进行隐式迭代

<button class="btn">按钮</button>
var btn = document.getElementsByClassName("btn")[0];
console.log(btn);
btn.name = "dom";  //修改或者设置name
btn.className = " btninfo";//类赋值的时候,直接给值进行覆盖,修改或者设置

1.文本值操作 修改或者设置文本
btn.innerText=“修改文本”; //操作的对象是文本
btn.innerHTML=“修改文本”; //操作的对象是元素里面的子内容
2.获取当前元素的文本值
console.log(btn.innerText);
获取当前元素的子内容,包含html标签
console.log(btn.innerHTML);
3.会自动解析字符串里面的标签
btn.innerText=“按钮”;
btn.innerHTML=“按钮”;

4.行内样式的获取方式
console.log(btn.style.color);
非行内样式元素的获取方式
console.log(window.getComputedStyle(btn).width);
获取的当前元素对象的伪元素的样式
console.log(window.getComputedStyle(btn, “:after”).position);
只有元素的行内样式可修改,非行内样式不能修改(因为非行内样式为read-only)

5.给元素设置自定义属性以及获取
btn.setAttribute(“data-index”, 0);//设置自定义属性
获取自定义属性
console.log(btn.getAttribute(“data-index”));

6.dom元素节点操作
获取ul里面的子集
console.log(menu.children); //获取父元素的所有子集元素(htmlcollection集合)
console.log(menu.childNodes); //获取的是元素的子集节点 节点包含文本、元素、符号(nodelist集合)
过滤子集节点
console.log(menu.childNodes[i].nodeName);//获取节点名称
console.log(menu.childNodes[i].nodeType);//获取节点类型 标签类型 1
console.log(menu.childNodes[i].nodeValue);//获取节点文本,符号,值 (元素没有时是null )
字符串大小写
toLowerCase() 大写转化为小写
toUpperCase() 小写转大写

  if (menu.childNodes[i].nodeName.toLowerCase() == "li") {
            console.log(menu.childNodes[i]);
        }

7.dom子父元素操作
console.log(menu.firstChild); //获取元素的第一个子节点
console.log(menu.firstElementChild);//获取元素的第一个子元素
console.log(menu.lastChild); //获取元素的最后一个子节点
console.log(menu.lastElementChild);//获取元素的最后一个子元素
元素的父元素
console.log(menu.parentNode);//获取当前元素的父节点
console.log(menu.parentElement);//获取的是当前元素的父元素
console.log(menu.parentNode.nodeType);获取父元素节点类型(标签1)
console.log(menu.parentElement.nodeName);获取body

dom元素事件及动态绑定、监听
事件:对象的被动行为(主动行为称方法,被动的行为称事件)
事件方式:普通方式、动态绑定、监听
一、普通方式
鼠标事件: mouseover mouseup mousedown click dbclick mouseleave mouseout mousemove mouseenter mousewheel(滚轮)
键盘事件:keypress keydown keyup
表单事件:focus blur submit change input(获取用户输入事件)
浏览器事件 scroll load error resize contentmenu(右键打开浏览器菜单)
剪贴版事件 cut(剪贴) copy(复制) paster(粘贴) selectstart 选择事件
在元素上直接写事件 在元素上写事件 后边写方法调用 名称();

<button onmouseenter="enterbtn()">按钮</button>
 function enterbtn(){
        console.log("鼠标进入");
    }

二、动态绑定

<button id="btn">按钮</button>
<ul>
    <li>第一节</li>
    <li>第二节</li>
    <li>第三节</li>
    <li>第四节</li>
    <li>第五节</li>
</ul>
//写法一
var btn=document.getElementById("btn");
  btn.onclick=function (){
  console.log("btn");
  }
//写成函数的形式
function fun()
{
var btn=document.getElementById("btn");
btn.onclick=function (){
console.log("btn");}
}
fun();

//点击当前li  输出当前的元素
var liele=document.getElementsByTagName("li");
for(var i=0;i<liele.length;i++)
{
 //写法一,用闭包来实现点击输出当前的i
   (function (n){
   liele[n].onclick=function (){
   console.log(n);}
   })(i);
  //写法二,关联当前的i  到当前对象的属性上
      liele[i].index=i;
      liele[i].onclick=function (){
     //事件里面的this指针指的是当前事件的执行对象
      console.log(this.index);}
}

移除动态绑定
btn.οnclick=null;

三、监听
1.监听btn的click事件
监听的函数 addEventListener,监听的时候事件不写on
btn.addEventListener(“click”,function (){
console.log(“监听”);
});

2.事件的捕获和冒泡
事件的冒泡原理:由里向外冒泡
事件的捕获原理:由外向里捕获
第三个参数不写默认是false冒泡 true为捕获(btn.addEventListener(“click”,function (){ },true);)

3.处理冒泡事件
阻止冒泡
btn.onclick = function (e) {
1.e.stopPropagation(); //阻止事件冒泡
2.return false;//jquery里面使用的
3.e.cancelBubble = true; //设置为true阻止事件冒泡
}
阻止默认行为(阻止右键打开菜单)
window.oncontextmenu = function (e) {
1.e.preventDefault();//阻止事件默认行为
2.return false;
3.e.returnValue = false;
}

事件的执行
事件的执行参数 event(e)
btn.οnclick=function (e){
console.log(e);
}
event 代表事件的执行参数对象
鼠标事件输出参数是mouseevent对象
clientx clienty 指的是当前点击的位置相对浏览器的坐标
layerx layery 指当前的点击位置相对元素的偏移量
offsetx offsety 指当前点的位置相对元素的偏移量
pagex pagey 当前的位置相对浏览器的坐标
screenx screeny 当前的位置相对屏幕的坐标
returnValue true/false 当前事件执行成功之后是否返回结果
srcElement target toElement 触发的目标元素
timeStamp 触发的时间 ms单位
type 触发的事件类型
which 值是ascii 鼠标事件全是1

滚轴事件
window.onmousewheel=function (e)
{
//滚轴里面  判断上滑和下滑  deltaY
if(e.deltaY>0)
{console.log("下滑");}
else{console.log("上滑");}
}

this指针
1.直接写的this
console.log(this);//window
2.元素事件里面的this 指向的是当前事件的执行对象
document.body.οnkeypress=function (){
console.log(this);//直接指向body
}
3.函数里面的this
function method(){
console.log(this);//window
}
method();
在js里面写的全局变量和函数 全部属于window的属性 this直接window
var count=0;
console.log(window.count);//全局变量是window的属性
window.method();
4.属于js里面的自定义对象 构造函数 this指向对象
① function person(){
this.name=“张三”;
this.eat=function (){
console.log(“吃饭”);
}
}
var p=new person();
console.log§;
②var obj={
sleep:function (){
console.log(this);//obj
}
};
obj.sleep();

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
DOM(文档对象模型)是一种用于处理XML和HTML文档的编程接口。DOM元素是HTML或XML文档中的基本构建块。它们是文档的一部分,可以用来表示文档中的任何内容,例如文本、图像、链接或其他元素。 HTML中的DOM元素可以是以下之一: 1. 标签(例如,<div>、<p>、<h1>等) 2. 属性(例如,id、class、src等) 3. 文本(例如,页面内容和注释) 使用JavaScript可以直接访问和操作DOM元素。例如,我们可以使用document.getElementById()函数来获取具有指定ID的元素,然后可以使用其他函数来更改元素的样式、内容或属性。 下面是一个简单的HTML代码示例,其中包含几个常见的DOM元素: ``` <!DOCTYPE html> <html> <head> <title>DOM Example</title> </head> <body> <h1 id="title">Hello World!</h1> <p class="message">Welcome to my website.</p> <button onclick="changeText()">Click me</button> <script> function changeText() { document.getElementById("title").innerHTML = "New Title"; document.getElementsByClassName("message")[0].innerHTML = "New message"; } </script> </body> </html> ``` 在上面的示例中,我们定义了一个标题、一个段落和一个按钮,然后使用JavaScript来更改标题和段落的文本内容。我们使用document.getElementById()函数获取标题元素,然后使用innerHTML属性将其文本内容更改为“New Title”。我们还使用document.getElementsByClassName()函数获取类名为“message”的段落元素,然后使用innerHTML属性将其文本内容更改为“New message”。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值