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

简介:

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 );
}

目录
相关文章
|
29天前
|
JavaScript 前端开发
使用jQuery操作DOM元素
使用jQuery操作DOM元素
16 1
|
29天前
|
JavaScript 前端开发
JavaScript操作DOM元素
JavaScript操作DOM元素
11 1
|
1月前
|
JavaScript vr&ar
vue3通过ref获取dom元素并修改样式
vue3通过ref获取dom元素并修改样式
110 0
|
16天前
|
JavaScript
vue监听dom元素的宽高变化和自定义指令监听dom元素的宽高变化
vue监听dom元素的宽高变化和自定义指令监听dom元素的宽高变化
16 0
|
8天前
|
JavaScript 前端开发
|
30天前
|
前端开发 JavaScript Java
第四章使用jQuery操作DOM元素
第四章使用jQuery操作DOM元素
9 0
|
30天前
|
JavaScript
jQuery操作DOM元素案例
jQuery操作DOM元素案例
10 0
|
1月前
|
JavaScript 前端开发
JS获取DOM元素的八种方法(含代码,简单易懂)
JS获取DOM元素的八种方法(含代码,简单易懂)
|
1月前
|
JavaScript 前端开发
vue创建dom的方法有哪些
vue创建dom的方法有哪些
24 2
|
1月前
|
JavaScript
在created中创建dom操作的方法是什么?
在created中创建dom操作的方法是什么?
8 0