1.使用JS获取页面中某个元素的4种方法

1.通过id名获取元素

document.getElementById("id名");

2.通过class名获取元素

document.getElementsByClassName("class名");  

3.通过元素标签去获取元素

document.getElementsByTagName("标签名");

4.通过css选择器去获取元素

document.querySelectorAll("css选择器 ");//(1)
document.querySelector("css选择器 ");//(2)
//(1)和(2)两者不同

5.补充说明:
如果想要在控制台打印页面上的所有dom节点,以下两张方法都可以。
方法一:

console.log( document.getElementsByTagName("*") );

方法二:

console.log( document.all );

举例说明

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<div>
<h2></h2>
<ul>
<li></li>
<li></li>
<li></li>
</ul>
</div>
<script>
// console.log( document.getElementsByTagName("*") );
console.log( document.all );
</script>
</body>
</html>

代码运行结果

2.方法之间的差别

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
.active{
background: palevioletred;
}
.red{
background: red;
}
</style>
</head>
<body>
<ul id="listOne" class="order">
<li class="active">0</li>
<li class="active">1</li>
<li>
<ul>
<li class="active">2-1</li>
<li>2-2</li>
</ul>
</li>
</ul>
<ul>
<li>0</li>
<li>1</li>
</ul>
</body>
</html>

需求一:获取页面中id="listOne"的ul,并给此ul添加红色的背景。


方式一: 使用 通过 id名 获取元素

var list=document.getElementById("listOne");
console.log(list);
list.style.background="red";

结果:

说明:

因为页面上的id是唯一的,所以控制台打印的值就是页面上的id="listOne" 的 ul。后面一个ul没取到。

解释说明:
优点:因为页面上的id是唯一的,所以很好确定并取到对应的元素。
缺点:因为id是唯一的,但是在css样式中,给元素一般都是取 class名。如果使用id,元素样式不太好复用。


方式二: 使用 通过 class名 获取元素

错误代码:

var list=document.getElementsByClassName("order");
console.log(list);
list.style.background="red";

结果:

错误原因:
1.页面上的class取名不是唯一的,是可以重复的。所以document.getElementsByClassName("order");的返回值是一个类似数组的集合,为HTMLCollection(1)。
2.就算页面上面只有一个class=“order”,它的返回值依旧是集合。
3.集合并没有style的属性,所以会报错。

正确代码:

var list=document.getElementsByClassName("order")[0];//用素组下标去取
console.log(list);
list.style.background="red";

结果:

解释说明:
优点:方便写结构样式。
缺点:class取值 ie9以下不支持


方式三 : 使用 通过 元素标签 获取元素

var list=document.getElementsByTagName("ul")[0];//用素组下标去取
console.log(list);
list.style.background="red";

结果:

说明:

1.元素标签和class名是一样的,在页面是可以重复的。所以理解起来,可以当成class名去理解。解释和class名是一样的。
2.document.getElementsByTagName("ul");的返回值是一个类似数组的集合,因为页面上有两个ul,所以返回值为HTMLCollection(2)。
3.就算页面上面只有一个标签,它的返回值依旧是集合。
3.集合并没有style的属性,所以需要用下标去取。

解释说明:
优点:方便写结构样式。
缺点:没有兼容问题。


需求二:获取页面中id为“listOne”的ul的第一层子级。其子级的class为active。并把其背景改成红色.

这时只能选用css选择器。

var li=document.querySelectorAll("#listOne > .active");
console.log(li);
li[0].className="red";
li[1].className="red";

结果:

说明:

1.document.querySelectorAll("css选择器");如何用css选中,在“ ”内就如何写。eg:document.querySelectorAll("#listOne > .active");
2.console.log(li);返回值也是一个类似数组的集合。返回值为NodeList(2)。
3.所以也需要用下标去取值。

解释:

1.比较好用,比较常用。
2.但是也存在兼容问题 ie9以下不支持


querySelectorAll("css选择器 ")和querySelector("css选择器 ")的区别:

如果以上代码用querySelector("css选择器 ")写

var li=document.querySelector("#listOne > .active");
console.log(li);
li.className="red";

结果:

说明:
1.document.querySelector("#listOne > .active")只取到第一个取到的值。第二个值不取。
2.返回的不是集合,所以可以直接使用。

解释:

1.不太常用。
2.存在兼容问题 ie9以下不支持


JS基础入门篇( 三 )—使用JS获取页面中某个元素的4种方法以及之间的差别( 一 )的更多相关文章

  1. JS获取网页中HTML元素的几种方法分析

    getElementById getElementsByName getElementsByTagName 大概介绍 getElementById ,getElementsByName ,getEle ...

  2. JS基础入门篇(三十五)—面向对象(二)

    如果没有面向对象这种抽象概念的小伙伴,建议先看一下我写的JS基础入门篇(三十四)-面向对象(一)

  3. php获取数组中重复数据的两种方法

    分享下php获取数组中重复数据的两种方法. 1,利用php提供的函数,array_unique和array_diff_assoc来实现 <?php function FetchRepeatMem ...

  4. jQuery基础学习5——JavaScript方法获取页面中的元素

    给网页中的所有<p>元素添加onclick事件 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN& ...

  5. JS基础入门篇(二十七)—BOM

    虽然上次写到js基础篇(二十四),这次直接写到(二十七).是为了提醒自己中间有几篇没写.特此说明一下啊. 1.window.open() 使用a标签呢,点击一下a标签页面才会跳转,有时候我们需要做的操 ...

  6. JS基础入门篇(四十三)—ES6(二)

    1.对象简洁表示法 原来写法 var name = "lzf"; var gender = "male"; var fn = function(){consol ...

  7. JS基础入门篇(二十四)—DOM(上)

    1.常用的节点类型,nodeType,attributes,childNodes. 1.元素节点 - 1 2.属性节点 - 2 3.文本节点 - 3 4.注释节点 - 8 5.文档节点 - 9 查看节 ...

  8. JS基础入门篇(三)— for循环,取余,取整。

    1.for循环 1.for的基本简介 作用: 根据一定的条件,重复地执行一行或多行代码 语法: for( 初始化 ; 判断条件 ; 条件改变 ){ 代码块 } 2.for循环的执行顺序 <bod ...

  9. JS基础入门篇(三十四)— 面向对象(一)

    1.对象 对象的定义 : 对象 是 由 键值对 组成的无序集合. 创建对象两种方法 : 方法一 : 字面量方法 var obj = {name: "k"}; 方法二 : new O ...

随机推荐

  1. ionic使用自定义icon

    参考文档:https://www.jianshu.com/p/5346fee9fd80  angular+ionic 自定义图标 注意: 这里不用name 用class类名显示出来 最后出来图标是个小 ...

  2. SQL 基本查询语句

    --使用数据库 use date go --创建表班级表 create table classInfo ( classNo ,),--主键约束使用primary key identity classN ...

  3. ctrl+r 调用bash曾经的历史命令

    在bash界面 按ctrl+r 可以调出, bash中曾经的历史命令, 光标会停留在 第一次被匹配的字符上, (即使后面你再输入被匹配的字符, 光标也不移动) 然后, 根据你的需要 来进行任何一次的操 ...

  4. Ajax初探

    一.AJAX准备知识:JSON 1.stringify与parse方法 2.和XML的比较 二.AJAX简介 AJAX常见应用情景 AJAX的优缺点 优点: 三.jQuery实现的AJAX $.aja ...

  5. Delphi XE2 之 FireMonkey 入门(24) - 数据绑定: TBindingsList: TBindExpression.Direction

    在学习 BindingSource 属性时, 可以让两个控件互为绑定源; TBindExpression 对应的功能是 Direction 属性. 先在窗体上添加 Edit1.Edit2.Bindin ...

  6. python修改文件

    文档username.txt 将文件中密码123456改成67890: 方法一:(简单粗暴) 1.打开文件 2.读出数据 3.修改数据 4.清空原来文件,将新的内容写进去 f = open('user ...

  7. Python Error: “ImportError: No module named six”,用自动安装解决依赖问题

    在初次运行带有matplotlib包的程序时,被告知了缺少模块(如标题所示).搜索调查后发现在自己安装的python中确实缺少此安装包,接下来,进行了下载.安装.运行,又少了一个模块,再下载.再运行, ...

  8. python实现excel转换成pdf

    1.安装 需要安装pywin32包,以实现对Office文件的操作,可以批量转换为pdf文件.支持 doc, docx, ppt, pptx, xls, xlsx 等格式. pip install p ...

  9. css练习-容器内多元素水平居中-flexbox布局应用

    想要实现这样一个父元素中的子元素都是居中的 只需在父元素上加样式 {display: flex;flex-direction: column;align-items:center;} 设置为flexb ...

  10. 绕过安全狗Apache4.0版本

    参数拦截:script.空格and空格.空格or空格.union select.user() 绕过: and.order by绕过:  内联注释 union select绕过: union%23%0a ...