javascript-web APIs
作者:互联网
web APIs和JS的基础关联性
Web APIs- 主要学习DOM和BOM
- js独有部分
- 页面交互效果
- js的应用
- API是为我们程序员提供一个接口,帮助实现某种功能
- web API主要是针对于浏览器提供的接口,主要针对浏览器做交互效果
- web API一般都有输入和输出(函数的传参和返回值),web API很多都是方法(函数)
如何获取页面的元素
根据ID获取<body> <div id="time"> 2019-9-9 </div> <script> //1.因为我们文档页面从上往下加载,所以先得有标签,所以script写到标签下面 //2.get获得element元素by通过驼峰法命名 //3.参数id是大小写敏感的字符串 //4.返回的是一个元素对象 var timer = document.getElementById('time'); console.log(timer); //5.console.dir打印我们返回元素对象,更好的查查看里面的属性和方法 console.dir(timer); </script> </body>
根据标签名获取
<ul> <li>知否知否,应是绿肥红瘦1</li> <li>知否知否,应是绿肥红瘦2</li> <li>知否知否,应是绿肥红瘦3</li> <li>知否知否,应是绿肥红瘦4</li> <li>知否知否,应是绿肥红瘦5</li> </ul> <ol id="ol"> <li>哈哈哈哈哈哈哈</li> <li>哈哈哈哈哈哈哈</li> <li>哈哈哈哈哈哈哈</li> <li>哈哈哈哈哈哈哈</li> <li>哈哈哈哈哈哈哈</li> </ol> <script> //返回的是 获取过来元素对象的集合 以为数组的形式存储 var lis = document.getElementsByTagName('li'); console.log(lis); console.log(lis[1]); //可以循环遍历发音里面的元素,用for循环 //如果里面只有一个li,返回的还有一个伪数组的形式 //如果里面没有li,则返回的是一个空的伪数组 //element.getElementsByTagName('标签名');父元素一定是一个单独的元素 var ol = document.getElementById('ol'); console.log(ol.getElementsByTagName('li')); </script>
根据类名来获得
<div class="box">盒子1</div> <div class="box">盒子2</div> <div id="nav"> <ul> <li>首页</li> <li>产品</li> </ul> </div> <script> //1.getElementsByClassName根据类名获得某些元素集合 var boxs = document.getElementsByClassName('box'); console.log(boxs); //2.querySelector 返回制定选择器的第一个元素对象 选择器要加符号:类加. id加# var firstbox = document.querySelector('.box'); console.log(firstbox); var nav = document.querySelector('#nav'); console.log(nav); var li = document.querySelector('li'); console.log(li); //3.querySelectorAll()返回制定选择器所有元素的集合 var allbox = document.querySelectorAll('.box'); console.log(allbox); 获取body和html <script> //1.获取body元素 var bodyele = document.body; console.log(bodyele); //2.获取html元素 var htmlele = document.documentElement; console.log(htmlele); </script>事件实行的步骤
- 获取事件源
- 注册事件(绑定事件)
- 添加事件处理程序
<div>123</div> <script> //执行事件步骤 //点击div控制台输出 我被选中了 //1.获取事件源 var div = document.querySelector('div'); //添加事件 //div.onclick //添加处理程序 div.onclick = function () { alert('我被选中了'); } </script>
操作元素
改变元素的内容<button>显示当前系统时间</button> <div>TIME</div> <p>123456</p> <script> //当我们点击按钮,div里面的文字会发生变化 //1.获取元素 var btn = document.querySelector('button'); var div = document.querySelector('div'); //2.注册事件 btn.onclick = function () { div.innerText = getdate(); } function getdate() { var date = new Date(); var year = date.getFullYear(); var month = date.getMonth() + 1; var dates = date.getDate(); var arr = ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六']; var day = date.getDay(); return '今天是' + year + '年' + month + '月' + dates + '日' + arr[day]; } //我们元素可以不用添加事件 var p = document.querySelector('p'); p.innerText = getdate(); </script> <div></div> <p> 我还是那要 <span>123</span> </p> <script> //innerText和innerhtml的区别 //1.innerText 不识别html标签 去除空格 换行 var div = document.querySelector('div'); // div.innerText = '<strong>今天是:</strong>2022'; //2.innerHTML识别html标签 保留空格和换行 div.innerHTML = '<strong>今天是:</strong>2022'; //这两个属性是可读写的 可以获取元素里面的内容 var p = document.querySelector('p'); console.log(p.innerText); console.log(p.innerHTML); </script>
常用元素的属性操作
<button id="ldh">刘德华</button> <button id="zxy">张学友</button> <img src="images/ldh.jpg" alt="" title="刘德华"> <script> //修改元素属性 src //1.获取元素 var ldh = document.getElementById('ldh'); var zxy = document.getElementById('zxy'); var img = document.querySelector('img'); //2.注册事件 zxy.onclick = function () { img.src = 'images/zxy.jpg'; img.title = '张学友'; } ldh.onclick = function () { img.src = 'images/ldh.jpg'; img.title = '刘德华'; } </script> //分时段输出不同文字和图片 <img src="images/morning.jpg" alt=""> <div>早上好</div> <script> //案例分析 // 根据系统不同时间来判断,所以需要用到日期内置对象 //利用分支语句来设置不同的图片 //需要一个图片,并且根据时间修改图片,就需要用到操作元素src属性 //需要一个div元素,显示不同的问候语,修改内容即可 //1.获取元素 var img = document.querySelector('img'); var div = document.querySelector('div'); //2.获得当前小时数 var date = new Date(); var h = date.getHours(); //3.判断小时数改变图片和文字信息 if (h < 12) { img.src = 'images/morning.jpg'; div.innerHTML = '早上好,一年之际在于晨'; } else if (h < 18) { img.src = 'images/afternoon.jpg'; div.innerHTML = '中午好,养好精神下午继续工作'; } else { img.src = 'images/night.jpg'; div.innerHTML = '晚上好,早点睡哦'; } </script>
表单元素的属性操作
<button>按一下</button> <input type="text" value="输入内容"> <script> //1.获取元素 var btn = document.querySelector('button'); var input = document.querySelector('input'); //2.注册事件处理程序 btn.onclick = function () { //inpur.innerHTML=‘’这个是普通盒子 比如div标签里面的 //表单里面的值 文字内容用value来修改的 input.value = '我已经点过来'; //如果想要某个表单被禁用来不能再点击 disabled 我们想要按钮禁用 btn.disabled = true; this.disabled=true; //this指向事件函数的调用者 btn } </script>
仿京东登陆界面
- 核心思路:点击眼睛按钮,把密码框类型改为文本框就可以看见里面的密码
- 一个按钮两个状态,点击一次切换为文本框,继续点击一次跟换为密码框
- 算法:利用一个flag变量,来判断flag的值,如果是1就切换为文本框,flag设置为0,如果是0就切换为密码框,flag设置为1
<style> .box { position: relative; width: 300px; border-bottom: 1px solid #ccc; margin: 100px auto; } .box input { width: 370px; height: 30px; border: 0; outline: none; } .box img { position: absolute; top: 10px; right: 2px; width: 12px; } </style> <div class="box"> <label for=""> <img src="images/bi.jpg" alt="" id="eye"> </label> <input type="password" name="" id="pwd"> </div> <script> //1.获取元素 var eye = document.getElementById('eye'); var pwd = document.getElementById('pwd'); //2.注册事件 处理程序 var flag = 0; eye.onclick = function () { //点击一次,flag一定要变化 if (flag == 0) { pwd.type = 'text'; eye.src = 'images/zheng.jpg'; flag = 1; } else { pwd.type = 'password'; eye.src = 'images/bi.jpg'; flag = 0; } } </script>
样式属性修改操作
div { width: 100px; height: 100px; background-color: pink; } <div></div> <script> //1.获取元素 var div = document.querySelector('div'); //2.注册事件 处理 div.onclick = function () { this.style.backgroundColor = 'blue'; this.style.width = '400px'; } </script>关闭淘宝二维码案例
- 核心思路:利用样式的显示和隐藏完成,display:none隐藏元素display:block显示元素。
- 点击按钮,就让这个二维码盒子隐藏起来即可
.box { position: relative; width: 74px; height: 88px; border: 1px solid #ccc; margin: 100px auto; font-size: 12px; text-align: center; color: #f40; display: block; } .box img { width: 60px; margin-top: 5px; } .close-btn { position: absolute; top: -1px; left: -16px; width: 14px; border: 1px solid #ccc; line-height: 14px; font-family: Arial, Helvetica, sans-serif; cursor: pointer; } <div class="box"> 淘宝二维码 <img src="images/tb.png" alt=""> <i class="close-btn">X</i> </div> <script> //1.获取元素 var btn = document.querySelector('.close-btn'); var box = document.querySelector('.box'); //2.注册事件 程序处理 btn.onclick = function () { box.style.display = 'none'; } </script>
className的使用
div { width: 100px; height: 100px; background-color: pink; } .change { width: 200px; height: 200px; background-color: blueviolet; } <div class="first"> 文本 </div> <script> var test = document.querySelector('div'); test.onclick = function () { //可以通过修改元素的className更改元素的样式 适用于样式较多的情况 // this.className = 'change'; //如果想要保留原先的类名,我么可以使用多类选择器 this.className = 'first change'; } </script>注:
- 如果样式修改较多,可以采取操作类名方式更改元素样式
- class因为是个保留字,因此使用className来操作元素类名属性
- className会直接更改元素的类名,会覆盖原先的类名。
- 首先判断的事件是表单丢失焦点onblur
- 如果输入正确则提示正确的信息颜色为绿色小图标变化
- 如果输入不是6到16位,则提示错误信息颜色为红色小图标变化
- 因为里面变化样式较多,我们采className修改样式
div { width: 600px; margin: 100px auto; } .message { display: inline-block; font-size: 12px; color: #999; background: url() no-repeat left center; padding-left: 20px; } .wrong { color: red; } .right { color: green; } <div class="register"> <input type="password" class="ipt" id=""> <p class="message">请输入6~16位密码</p> </div> <script> //1.获取元素 var ipt = document.querySelector('.ipt'); var message = document.querySelector('.message'); //2注册事件 失去焦点 ipt.onblur = function () { //根据表单里的值长度 if (this.value.length < 6 || this.value.length > 16) { message.className = 'message wrong'; message.innerHTML = '您输入的位数不对请输入6~16位数'; } else { message.className = 'message right'; message.innerHTML = '您输入正确'; } } </script>
总结
标签:web,元素,console,APIs,javascript,querySelector,var,div,document 来源: https://www.cnblogs.com/shuchenhao/p/16022991.html