昨天给大家分享了JS的进阶,今天来继续给大家分享JS的BOM编程。


一,常用的编程元素

style:标签中的style属性(用于设置样式)

h1-h6:标题标签,从大到小排列

b:加粗标签

br:跨行标签

hr:分割线biaoq

font:字体标签

img:图片标签 需要先将图片传入html

src:图片地址

width:宽度

height:高度

background:背景

color:颜色

table:表格标签(需要搭配 tr 和td 使用 也就是行和列)

ul:无序标签

ol:有序标签 ul和ol都需要搭配li使用


二,获取元素的方法

1.通过id获取元素

document.getElementById() : 通过标签中的id属性 来获取元素 如果已经知道了id 也可以用id名直接进行下一步操作

优点:精准

缺点:需要一个一个拿,使用时较为麻烦

适用范围:适合需要操作的元素不多时使用


2.通过标签名获取元素

document.getElementsByTagName() : 通过标签名获取元素

优点:方便快捷,一次性拿出多个

缺点:由于拿出的是多个 (一个集合) 导致无法精准到每个元素

适用范围:适合元素较多时使用(可以批量获取元素)


3.通过class属性获取元素

document.getElementsByClassName() : 通过标签中的class属性获取元素

优点:可以在较多元素中,精准锁定某些元素

缺点:和通过id来获取元素的方法一样,需要对应元素,较为繁琐

适用范围:可以搭配通过标签名获得原色==元素的方法一起使用,可以做到在大范围的元素中锁定需要的元素


4.通过name属性获取元素

document.getElementsByName() :通过标签中的name属性获取元素

优点:也和id一样可以较为精准的对应某些元素 但是id是唯一的 不能重复 但是name可以有重复的值

缺点:有些标签里面是没有name属性的 比如:div等

适用范围:在大范围元素中锁定一些有name属性的元素


三,元素中的常用事件

1.点击事件

onclick:点击事件

ondblclick : 双击事件

利用点击事件来切换元素属性(背景颜色):

<!DOCTYPE html>
<html><head><meta charset="utf-8"><title>Score</title><style type="text/css">div{width: 200px;height: 150px;background-color: burlywood;display: inline-block;}</style></head><body><div id="d1" class="a" ></div><div class="a"></div><div ></div><br><button type="button" onclick="fn1()" name="bb">点我切换颜色</button><button type="button" onclick="fn2()">点我切换颜色(类)</button><button type="button" onclick="fn3()" name="bb">bbb</button><script type="text/javascript">function fn1(){//通过id来调取 也可用 document.getElementById() 来获取id//但是这种方法只适用于少量的元素,如果元素过多,则需要定义许多id// d1.style.backgroundColor="pink";//标签选择器 去拿出多个元素 这样比拿出id要方便快捷 但是会拿出多个 所以是一个数组var ds=document.getElementsByTagName("div")ds.style.backgroundColor="pink";//这里的ds是一个数组,它不能设置标签//Cannot set properties of undefined//不能设置来自未定义的属性(设置background的时候报的错)//遍历数组for(var i=0;i<ds.length;i++){ds[i].style.background="pink";}//foreach 直接遍历数组for(let i of ds){//i就是每一个元素i.style.background="pink";}}function fn2(){var aa=document.getElementsByClassName("a")//只要碰到循环(尤其是foreach循环) 就不能用var 用let(定义局部变量)for( let i of aa){i.style.background="purple"}}function fn3(){var aa=document.getElementsByName("bb")//只要碰到循环(尤其是foreach循环) 就不能用var 用let(定义局部变量)for( let i of aa){i.style.background="purple"}}</script></body>
</html>

2.焦点事件

onfocus : 获得焦点事件

onblur : 失去焦点事件

利用焦点事件来实现输入框的值的变换

<!DOCTYPE html>
<html><head><meta charset="utf-8"><title>Score</title></head><body><!-- 30个输入框 --><input type="text"><input type="text"><input type="text"><input type="text"><input type="text"><input type="text"><inputtype="text"><input type="text"><input type="text"><input type="text"><input type="text"><inputtype="text"><input type="text"><input type="text"><input type="text"><input type="text"><inputtype="text"><input type="text"><input type="text"><input type="text"><input type="text"><inputtype="text"><input type="text"><input type="text"><input type="text"><input type="text"><inputtype="text"><input type="text"><input type="text"><input type="text"><button type="button" onclick="fn1('哈哈')">哈哈</button><button type="button" onclick="fn1('嘻嘻')">嘻嘻</button><script type="text/javascript">//填充信息的函数function fn1(a) {//1.拿到所有的输入框var is=document.getElementsByTagName("input")//2.更改值for(var i of is){i.value=a}}//修改信息的函数(()=>{//1.拿到所有输入框 记住拿出来的是个集合var is=document.getElementsByTagName("input")//2.更改值 (获得焦点事件,失去焦点事件)//碰到循环 不能用var (尤其是foreach循环) 要用let(定义局部变量)for(let i of is){//获得焦点事件i.onfocus=()=>{i.value=""}//失去焦点事件i.onblur=()=>{i.value="巴拉巴拉"}}})();</script></body>
</html>

3.鼠标移动事件

onmouseover : 鼠标移入

onmouseout : 鼠标移出

也可以用鼠标移动事件来完成输入框文本的替换(需要把焦点事件的函数替换为鼠标移动事件的函数)

(()=>{//鼠标移动事件//1.拿到所有输入框 记住拿出来的是个集合var is=document.getElementsByTagName("input")//2.更改值 (利用鼠标移动事件)//碰到循环 不能用var (尤其是foreach循环) 要用let(定义局部变量)for(let i of is){//鼠标移入事件i.onmouseover=()=>{i.value=""}//鼠标移出事件i.onmouseout=()=>{i.value="巴拉巴拉"}}})();

四,HTML元素的常用属性

textContent : 标签的文本内容(定义的标签不生效 即不能识别HTML语句)

InnerHTML : 标签中的html内容(标签会生效 能够识别HTML语句)

checked :表示是否被选中(用于 单选框,多选框)

style : 标签中的style属性(用于设置样式)

value : 元素的值(适用具备value属性的元素)


五,元素的显示

1.display

dispaly 元素的显示方法 
                1.none:不显示(界面中也不会留有元素原本的位置)
                2.block:以块状元素显示 (会跨行)
                3.inline:以行状元素显示(在一行内)
                4.inline-block 以行内块状元素显示(在行内,又可以跨行)
                
                if(d1.style.display==="none"){
                    d1.style.display="block";
                }else {
                    d1.style.display="none"
                }

2.visibility

visibility 元素的显示方法,分两种状态
                1.visible:可见
                2.hidden:不可见(但是会占据空间)
                
                if(d1.style.visibility==="visible"){
                    d1.style.visibility="hidden";
                }else{
                    d1.style.visibility="visible"
                }

3.opacity

opacity:元素的显示方式(主要用于控制元素的透明度,范围是0-1)
                注意:只是设置成了全透明,但是元素仍然存在;
                
                if(d1.style.opacity==0){
                    d1.style.opacity=1;
                }else{
                    d1.style.opacity=0
                }
            }


六,实验

利用元素显示来实现菜单隐藏功能,(点击菜单可以隐藏子菜单)用的都是今天教大家的知识哦,大家一起来试试吧!

示例代码如下:

<!DOCTYPE html>
<html><head><meta charset="utf-8"><title>Score</title><style type="text/css">div{width: 100px;height: 100px;background-color: bisque;}</style></head><body><div id="d1"></div><button type="button" onclick="fn1()">点我隐藏</button><!--hr 分割线标签 --><hr ><!--ul 无序标签 ol 有序标签  --><ul><li ><i onclick="fn2('u1')">家电</i><ul id="u1"><li>冰箱</li><li>电视</li><li>洗衣机</li></ul></li><li><span onclick="fn2('u2')">水果</span><ul id="u2"><li>苹果</li><li>香蕉</li><li>菠萝</li></ul></li></ul><hr><table border><tr><!-- this 的意思就是把自己这个标签传入函数中 checked 是一个属性 表示是否被选中  --><td><input type="checkbox" onclick="fn3(this.checked)"></td><td><input type="checkbox"></td><td><input type="checkbox"></td><td><input type="checkbox"></td><td><input type="checkbox"></td><td><input type="checkbox"></td><td><input type="checkbox"></td><td><input type="checkbox"></td><td><input type="checkbox"></td><td><input type="checkbox"></td></tr></table><script type="text/javascript">//隐藏元素的函数function fn1(){//用id来控制元素//dispaly 元素的显示方法 //1.none:不显示(界面中也不会留有元素原本的位置)//2.block:以块状元素显示 (会跨行)//3.inline:以行状元素显示(在一行内)//4.inline-block 以行内块状元素显示(在行内,又可以跨行)// if(d1.style.display==="none"){//    d1.style.display="block";// }else {//    d1.style.display="none"// }//visibility 元素的显示方法,分两种状态//1.visible:可见//2.hidden:不可见(但是会占据空间)// if(d1.style.visibility==="visible"){//     d1.style.visibility="hidden";// }else{//     d1.style.visibility="visible"// }//opacity:元素的显示方式(主要用于控制元素的透明度,范围是0-1)//注意:只是设置成了全透明,但是元素仍然存在;if(d1.style.opacity==0){d1.style.opacity=1;}else{d1.style.opacity=0}}//隐藏菜单的函数function fn2(id){//根据id拿出对应的元素//将对应元素设置为不显示var uid=document.getElementById(id);if(uid.style.display==="none"){uid.style.display="block"}else{uid.style.display="none";}}//实现全选功能的函数//拿到是否被选中的状态function fn3(status){//拿到所有多选框//设置选中第一个的多选框的状态 statusvar is=document.getElementsByTagName("input")//遍历数组 记得要用letfor(let i of is){//这里的i就是每一个多选框i.checked=status;}}</script></body>
</html>

今天的JS分享就到这里啦,精彩下期继续!

JavaScript(Bom编程)相关推荐

  1. JavaScript学习笔记(BOM编程案例)

    文章目录 1.window中的open.close.alert.confirm方法 2.history和location 2.1 history中的back和go方法 2.2 location的hre ...

  2. JavaScript提高,BOM编程,DOM编程

    第1章 BOM编程 1.1 BOM编程概述 1.1.1 BOM编程的概念 BOM:Browser Object Model 浏览器对象模型 1.1.2 BOM编程的作用 用于操作浏览器中的各种对象,不 ...

  3. 《javascript面向对象编程指南》读书笔记

    <javascript面向对象编程指南>读书笔记 <javascript面向对象编程指南>读书笔记 第一章 面向对象的JavaScript 第二章 基本数据类型与流程控制 变量 ...

  4. Javascript——DOM编程

    Javascript--DOM编程 基本概述 文档对象模型(Document Object Model,简称DOM),是W3C组织推荐的处理可扩展标志语言的标准编程接口.DOM可以以一种独立于平台和语 ...

  5. 初读JavaScript DOM编程艺术(一)

    JavaScript DOM编程艺术--前三章概念总结 一. 概述 1.什么是JavaScript 2.什么是DOM 二. JavaScript 语法 1. 语句和注释 2. 变量和数组 三. DOM ...

  6. 重读《JavaScript DOM编程艺术》(第一版)

    今天来了雅兴去图书馆看书.把<JavaScript DOM编程艺术>温习了一遍,平时写js的机会不是特别多,很多知识都有些模糊了. 伴随着身边键盘卡啦卡啦的声音,一位手速不是一般的快的程序 ...

  7. JavaScript 高级编程(二)

    JavaScript 高级编程(二) BOM 一套操作浏览器的API. 常见对象 window: 代表整个浏览器窗口 注意: window是BOM中的一个对象, 并且是一个顶级的对象(全局) Navi ...

  8. JavaScript Bom和Dom

    JavaScript Bom和Dom这一篇就够啦 JavaScript Bom和Dom 1.Web API 基本认知 2.DOM -- 基础 2.1 DOM简介 2.2 获取元素 2.3 事件基础 2 ...

  9. JavaScript面向对象编程-第三版不完全系统解读

    JavaScript面向对象编程-第三版不完全系统解读 作者:老九-技术大黍 产品:查看原文 社交:知乎 公众号:老九学堂(新手有福利) 特别声明:原创不易,未经授权不得转载或抄袭,如需转载可联系笔者 ...

  10. JavaScript DOM 编程艺术 (第二版)学习之3-4章

    JavaScript DOM 编程艺术 (第二版)学习之3-4章 第三章 DOM 3.1 文档:DOM中的"D" 3.2 对象:DOM中的"O" 3.3 模型: ...

最新文章

  1. 领导让我重构代码_领导不是由代码构成
  2. python工程师一个月多少钱-苏州工业园区学编程大概多少钱一个月
  3. 【告别信】三年了,是该离开了!
  4. xshell 安装yum_本地yum源配置及Xshell连接
  5. php 命名空间地址,php命名空间简介
  6. 剖析Linux系统启动过程
  7. zipentry压缩乱码linux,java生成压缩文件 ZipEntry出现乱码的有关问题
  8. Eclipse rap 富客户端开发总结(14) :rap 图片、数据缓存处理
  9. Mac Nginx 中 JDK安装位置,安装信息,打开jDK安装目录
  10. 使用FlashFXP V3.8烈火汉化绿色版软件连接Linux
  11. 【noi 2.6_3531】判断整除(DP)
  12. 二叉树 中序遍历 python_leetcode No.105 从前序与中序遍历序列构造二叉树
  13. 玩耍redis遇到的问题之记录
  14. python高阶函数心得体会_Python高阶函数总结
  15. MySQL 常用的查询命令
  16. 游戏开发中一些常用的数学知识
  17. d630 无线驱动 linux,DELL D630安装CentOS6的无线网卡驱动
  18. Android攻城狮 progressBarprogressDialog
  19. DOTA2利雅得大师赛利用api多线程对选手数据和战队数据爬取与分析
  20. cvc 降噪_科普知识:蓝牙耳机的“底噪”“主动降噪”“CVC降噪”是什么?

热门文章

  1. python将多个txt内容合并_python合并多个txt文件成为一个文件
  2. 【常用模块】HC-05蓝牙串口通信模块使用详解(实例:手机蓝牙控制STM32单片机)
  3. 向已知EXCEL模板写入数据并导出
  4. 客快物流大数据项目(六十八):工作流调度
  5. 计算机自带的画图软件在哪里,mac画图工具在哪里_mac自带画图工具怎么打开-win7之家...
  6. 你被选中了——晚会上的随机点名
  7. 网速测试软件win10,win10系统测试网速的操作方法
  8. java 方法重载 应用举例,Java中的方法重载应用
  9. linux shell 列表循环,shell脚本中,for基于列表进行循环的实现方法
  10. python字符串和字节串有什么区别_python中的字符串和字节串