DOM,元素查找,DOM修改方法,鼠标事件,键盘事件

本文涉及的产品
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介:

console . log ( document );

3. 通过document对象,可以实现对页面内容的修改
var h1Obj = document . getElementById ( "title" );
console . log ( h1Obj );

2. getElementsByClassName 方法:获取DOM中class值包含···的元素对象,返回值是一个类似数组的对象(类数组),这个对象可以向数组一样使用索引访问容器中的元素,也可以有length属性,但是没有数组的其他方法
因为class的值可以多用,所以Elements(元素)是复数
var lines = document . getElementsByClassName ( "line" );
console . log ( lines );

3. getElementsByTagName 方法:获取DOM中标签名为···的元素对象,返回值也是一个类数组
(选择所有的p标签)
var paragraph = document . getElementsByTagName ( "p" );
console . log ( paragraph );

4. querySelector 方法:查询DOM中第一个符合选择器的元素对象

5. querySelectorAll 方法:查询DOM中所有符合选择器的元素对象
// 在css中样式名是通过-分隔,在js中,样式名要用驼峰命名法
title . style . color = "red" ;
title . style . fontSize = "20px" ;
// 2. 通过js修改的样式实际上是修改了元素的行内样式 (优先级)



// 改内容
//1. textContent和innerHTML属性都用于修改元素的内容,区别是:textContent设置的内容中标签会显示为标签文本,而innerHTML中的标签会被解析为元素对象
title . textContent = "<i>js还可以修改元素的内容</i>" ;
title . innerHTML = "<i>js还可以修改元素的内容</i>" ;



//1.大部分的 html属性,都可以在js中通过元素对象的同名属性进行修改,例如a标签的href属性,img的src属性,input的placeholder属性
var link = document . getElementById ( "link" );
link . href = "http://mail.163.com" ;




// class修改

//1. 对于元素的class属性,它可以设置多个值,它是一个列表形式的数据,修改时不会直接修改全部,而是添加一个class值或者删除一个已有的class值,所以class的修改不能直接改元素对象的class属性
//2. 元素对象的classList表示元素的class列表,add方法用于添加一个class值
title . classList . add ( "c1" ); //正确的再添加一个class值
// 3.remove 删除一个class值
title . classList . remove ( "c3" );

// 4.toggle,切换一个class属性值,有则删除,无则添加
title . classList . toggle ( "c1" );


// 5.contains,判断某个元素的class中是否包含某个值
title . classList . contains ( "c4" );
<!--1. html的属性可分为:html自带属性和自定义属性 -->
<!-- html自带的属性又分为通用属性和专用属性,例如id,class,title是通用属性,src,href是专用属性 -->

<!--2. html标签还可以添加自定义属性 -->
<!-- 对于自定义属性,浏览器在解析页面时会忽略这些属性 -->
<!-- 自定义属性一般用于自定义属性选择器 -->
<div wangbin = "123" ></div>


// 在html标签中添加的属性叫做标签属性
// 找到这个元素对象,通过打点访问的属性时这个对象的属性
// 这两种属性有关联,但是不相等

// 对于大部分的标签属性,都可以通过同名的对象属性来设置
var box = document . getElementById ( "box" );
box . title = "悬停之后显示的提示内容" ;


// 除了这大部分属性之外,其他的属性(包括所有的自定义属性),都不能通过对象打点 添加
// 通过对象打点添加的属性。仅仅是这个元素对象的属性,并不能设置到标签上
box . first = "第一个属性" ;


// 通过js给标签添加自定义属性也有专门的写法

// setAttribute,为元素添加的标签属性,不管是自定义属性还是html自定的属性都可以通过这种方法设置.第一个参数是属性名,第二个参数是属性值(属性的值只能是字符串
box . setAttribute ( "first" , "通过setAttribute添加的自定义属性" );

// getAttribute 获得元素对象的某个标签属性(自定义和html自带属性都可以),参数是要获取的属性的名字,返回值就是获得的属性值
var t1 = box . getAttribute ( "title" );
console . log ( t1 );
//1 对于body元素对象,可以不用查找,直接通过document.body调用
// console.log(document.body);

// 2 createElement创建一个元素对象,参数是要创建的元素的名字,返回值就是创建的元素对象
var t1 = document . createElement ( "h1" );
t1 . textContent = "这是通过js设置的标题" ;
// 3 创建的元素必须添加到DOM中才能显示
// 元素对象 .appendChild方法表示为这个元素添加一个子元素,参数是要添加的子元素对象,被添加的子元素会排列在最后
document . body . appendChild ( t1 );


// 创建三个li
for ( var i = 0 ; i < 3 ; i ++){
var li = document . createElement ( "li" );
ul . appendChild ( li );
li . textContent = "这是li" ;
}


// 元素对象 .remove方法。从DOM中删除这个元素
// ul.remove();

// 删除元素对象的某个子元素
document . body . removeChild ( ul );
<!-- 监听某个元素的事件,可以为 这个元素标签添加 onxxx属性,xxx表示要监听的事件类型,属性的值就是要执行的js代码-->
<!-- onclick表示鼠标左键单击事件 -->

<!-- <div id="btn1" onclick="alert('蓝色')">蓝色</div>
-->
<!-- 1 如果事件对应的代码只有一行,就可以直接写在属性值中,如果事件对应的代码非常复杂,则可以把这段代码写成一个函数 ,写在js代码中。然后在事件代码中调用这个函数-->
<!-- <div id="btn1" onclick="btn1Click()">蓝色</div> -->

<!--2 给事件绑定事件函数时,可以传递一个全局对象event作为参数 -->
<!-- event是一个对象,里面存储着本次事件的详细信息 -->
<div id = "btn1" onclick = "btn1Click1()" > 蓝色 </div>
<div id = "btn2" onclick = "btn1Click2()" > 黄色 </div>
<div id = "box" ></div>
<script>
// event,事件,表示某些事情发生了,例如,鼠标点击,键盘点击,窗口尺寸发生变化,网络请求完成等。前端开发属于事件驱动式开发,程序的主要任务就是针对不同的事件作出不同的响应。例如,按下按钮之后执行什么,按下回车之后执行什么。

// 元素标签属性绑定的事件函数,必须是全局域中的函数
// function btn1Click1(){
// var x = document.getElementById("box");
// x.style.border = "solid 1px blue";
// }
// function btn1Click2(){
// var x = document.getElementById("box");
// x.style.border = "solid 1px yellow";
// }

// *******************************************************
function btn1Click ( e ){
var box = document . getElementById ( "box" );
// e 是事件对象,记录这本次事件的详细信息
// e.target 表示触发本次事件的元素

// 给多个按钮绑定事件函数时,可以绑定为同一个函数,在函数中通过e.target区分哪个按钮点击的。
// 也可以给这些按钮分别绑定不同的函数
if ( e . target . id == "btn1" ){
box . style . border = "solid 1px blue" ;
} else {
box . style . border = "solid 1px yellow" ;
}
}
// *********************************************************
// 给元素添加事件监听的另一种方法:

// 通过元素对象添加事件监听,元素对象可以是从DOM中查找,也可以是创建的
var btn = document . createElement ( "button" );
btn . textContent = "通过js添加的按钮" ;
document . body . appendChild ( btn );

// onclick是一个函数
// 可以通过元素对象为这个元素添加事件监听,格式为:元素对象.onxxxxx = 事件函数
// xxxx是监听的事件类型,事件函数一般写为匿名函数,当元素触发这个事件时,事件函数就会执行,自动传递event对象
btn . onclick = function (){
alert ( "你好" );
}
</script>

// onkeydown键盘上某个键被按下的事件
// onkeyup,某个键弹起时的事件
document . body . onkeydown = function ( e ){
// console.log("键盘上某个键被按下了")
console . log ( e );

// 通过事件对象的key或keyCode属性可以判断是哪个键被按下
if ( e . keyCode == 13 ){
alert ( "您按下了回车键" );
}
}
// 有两个参数:第一个参数是定时器事件函数,表示需要延时执行的函数。第二个参数是延时时间,单位是毫秒

// 返回值是一个定时器编号,通过这个编号可以在定时器出发前取消定时器
var timer = setTimeout ( function (){
alert ( "3秒到" );
}, 3000 );

console . log ( 123 );

// clearTimeout函数,取消一个创建但还未触发的定时器
clearTimeout ( timer );

// --------------------------------------------------------\


// setInterval,创建一个循环执行的定时器,每隔一段时间就执行一次事件函数
// 第一个参数是时间函数,第二个参数是间隔事件,单位毫秒
i = 0 ;
var timer2 = setInterval ( function (){
console . log ( i ++);
}, 1000 );

// 写一个按钮,当按下按钮取消
var bnt = document . getElementById ( "bnt" );
btn . onclick = function (){
clearTimeout ( timer2 );
}

目录
相关文章
|
2月前
|
JavaScript 前端开发 容器
用HTML DOM实现有条件地渲染网页元素(上)
用HTML DOM实现有条件地渲染网页元素(上)
|
2月前
|
存储 JavaScript 前端开发
用HTML DOM实现有条件地渲染网页元素(下)
用HTML DOM实现有条件地渲染网页元素(下)
|
5天前
|
缓存 编解码 JavaScript
DOM 和 BOM 在项目中应用时的性能优化方法
【10月更文挑战第19天】总之,优化 DOM 和 BOM 的性能需要综合考虑多个方面,通过合理的设计和技术手段,提升项目的运行效率和用户体验。在实际开发中,要不断地进行性能优化实践,以适应不断变化的需求和技术发展。
|
18天前
|
移动开发 JavaScript 前端开发
原生js如何获取dom元素的自定义属性
原生js如何获取dom元素的自定义属性
36 4
|
20天前
|
JavaScript
在Vue中获取DOM元素的实际宽高
【10月更文挑战第2天】
122 1
|
2月前
|
JavaScript 前端开发
JavaScript HTML DOM 元素 (节点)
JavaScript HTML DOM 元素 (节点)
25 2
|
2月前
|
前端开发 JavaScript
前端基础(七)_DOM元素获取(getElementById、getElementsByTagName、getElementsByClassName、querySelector等)
本文介绍了如何在前端通过不同的方法获取DOM元素,包括getElementById、getElementsByTagName、getElementsByClassName、querySelector和querySelectorAll。
83 3
|
2月前
|
JavaScript
Vue3基础(十wu)___ref获取原生dom元素
本文介绍了Vue3中使用`ref`来获取和操作原生DOM元素的方法,通过示例展示了如何通过`.value`改变元素的样式。
40 0
Vue3基础(十wu)___ref获取原生dom元素
|
24天前
|
JavaScript 前端开发
DOM的概念?获取html元素的方法有哪些?
DOM的概念?获取html元素的方法有哪些?
28 0
|
2月前
|
移动开发 前端开发 JavaScript
使用html-to-image代替html2canvas,结合jspdf实现下载pdf(下载截图下载前端dom元素)
本文介绍了在前端项目中,当使用`html2canvas`遇到问题时,如何使用`html-to-image`库作为替代方案,结合`jspdf`实现将DOM元素生成为PDF文件并提供下载。文章首先讨论了`html2canvas`可能遇到的问题,并提供了该库的使用示例代码。随后,详细介绍了`html-to-image`库的安装和使用方法,展示了如何将DOM元素转换为Canvas,再利用`jspdf`生成PDF文件。最后,文章通过示例代码说明了整个转换和下载的过程,并展示了效果截图。
59 0