实际应用中有哪些JS操作元素的实例
Admin 2022-07-09 群英技术资讯 325 次浏览
案例:显示隐藏密码案例
核心思路: (操作表单元素属性)
<style> .box{ position: relative; width: 400px; border-bottom: 1px solid #ccc; margin: 100px auto; } .box input{ width: 370px; height: 30px; border: 0; outline: none; } .box img{ position:absolute; top: 2px; right: 2px; width: 24px; } </style> <body> <div class="box"> <label for=""> <img src="./image/close.png" alt="" id="eye"> </label> <input type="password" name="" id="pwd"> </div> <script> var eye=document.getElementById('eye') var pwd=document.getElementById('pwd') var flag=0 eye.onclick=function(){ //点击后 更换文本框类型、图片及标记值 if(flag==0){ pwd.type='text' eye.src='./image/open.png' flag=1 }else{ pwd.type='password' flag=0 } } </script> </body>
核心思路: (操作元素样式)
<style> *{ margin: 0; padding: 0; } li{ list-style-type: none; } .box{ width: 250px; margin: 100px auto; } .box li{ margin: 15px; float: left; width: 24px; height: 24px; background: url(./image/sprite.png) no-repeat; } </style> <body> <div class="box"> <ul> <li></li> <li></li> <li></li> <li></li> <li></li> <li></li> <li></li> <li></li> <li></li> <li></li> <li></li> <li></li> </ul> </div> <script> // 1. 获取元素 所有的小li var lis = document.querySelectorAll('li'); for (var i = 0; i < lis.length; i++) { // 让索引号 乘以 44 就是每个li 的背景y坐标 var y = i * 44; lis[i].style.backgroundPosition = '0 -' + y + 'px'; } </script> </body>
核心思路:(用className修改样式属性)
<style> div { width: 600px; margin: 100px auto; } .message { display: inline-block; font-size: 12px; color: #999; background: url(./image/mess.png) no-repeat left center; padding-left: 20px; } .wrong { color: red; background-image: url(./image/wrong.png); } .right { color: green; background-image: url(./image/right.png); } </style> <body> <div class="register"> <input type="password" class="ipt"> <p class="message">请输入6~16位密码</p> </div> <script> var ipt = document.querySelector('.ipt') var messgae = document.querySelector('.message') ipt.onblur = function () { if (this.value.length < 6 || this.value.length > 16) { messgae.className = 'message wrong' messgae.innerHTML = '您输入位数不对 要求6~16位' } else { messgae.className = 'message right' messgae.innerHTML = '您输入的正确' } } </script> </body>
核心思想:(操作元素样式属性)
给4个小图片利用循环注册点击事件当点击了这个图片,让页面背景改为当前的图片核心算法: 把当前图片的src 路径取过来,给body 做为背景即可
<style> *{ margin: 0; padding: 0; } body{ background: url(./image/1.jpg) no-repeat center top; } li{ list-style-type: none; } .tu{ overflow: hidden; margin: 100px auto; background-color: #fff; width: 410px; padding-top: 3px; } .tu li{ float: left; margin: 0 1px; cursor: pointer; } .tu img{ width: 100px; } </style> <body> <ul class="tu"> <li><img src="./image/1.jpg"></li> <li><img src="./image/2.jpg"></li> <li><img src="./image/3.jpg"></li> <li><img src="./image/4.jpg"></li> </ul> <script> //获取元素 var imgs=document.querySelector('.tu').querySelectorAll('img'); //注册事件 for(var i=0;i<imgs.length;i++){ imgs[i].onclick=function(){ // this.src路径给body document.body.style.backgroundImage='url('+this.src+')'; } } </script> </body>
核心思路:(排他思想)
用到新的鼠标事件 鼠标经过 onmouseover 鼠标离开 onmouseout核心思路:鼠标经过 tr 行,当前的行变背景颜色,鼠标离开去掉当前的背景颜色注意: 第一行(thead里面的行)不需要变换颜色,因此获取的是 tbody 里面的行
<style> table{ width:800px; margin: 100px auto; text-align: center; border-collapse: collapse; font-size: 14px; } thead tr{ height: 30px; background-color: skyblue; } tbody tr{ height: 30px; } tbody td{ border-bottom: 1px solid #d7d7d7; font-size: 12px; color: blue; } .bg{ background-color: pink; } </style> <body> <table> <thead> <tr> <th>代码</th> <th>名称</th> <th>最新公布净值</th> <th>累计净值</th> <th>前单位净值</th> <th>净值增长率</th> </tr> </thead> <tbody> <tr> <td>003526</td> <td>农银金穗3个月定期开放债券</td> <td>1.075</td> <td>1.079</td> <td>1.074</td> <td>+0.047%</td> </tr> <tr> <td>003526</td> <td>农银金穗3个月定期开放债券</td> <td>1.075</td> <td>1.079</td> <td>1.074</td> <td>+0.047%</td> </tr> <tr> <td>003526</td> <td>农银金穗3个月定期开放债券</td> <td>1.075</td> <td>1.079</td> <td>1.074</td> <td>+0.047%</td> </tr> <tr> <td>003526</td> <td>农银金穗3个月定期开放债券</td> <td>1.075</td> <td>1.079</td> <td>1.074</td> <td>+0.047%</td> </tr> <tr> <td>003526</td> <td>农银金穗3个月定期开放债券</td> <td>1.075</td> <td>1.079</td> <td>1.074</td> <td>+0.047%</td> </tr> <tr> <td>003526</td> <td>农银金穗3个月定期开放债券</td> <td>1.075</td> <td>1.079</td> <td>1.074</td> <td>+0.047%</td> </tr> </tbody> </table> <script> //获取元素 var trs=document.querySelector('tbody').querySelectorAll('tr') //注册事件 for(var i=0;i<trs.length;i++){ trs[i].onmouseover=function(){ this.className='bg' } trs[i].onmouseout=function(){ this.className='' } } </script> </body>
核心思想:
<style> *{ padding: 0; margin: 0; } .wrap{ width: 300px; margin: 100px auto 0; } table{ border-collapse: collapse; border-spacing: 0; border: 1px solid #c0c0c0; width: 300px; } th,td{ border: 1px solid #d0d0d0; color: #404060; padding: 10px; } th{ background-color: #09c; font: bold 16px '微软雅黑'; color: #fff; } td{ font: 14px '微软雅黑'; } tbody tr{ background-color: #f0f0f0; } tbody tr:hover{ cursor: pointer; background-color: #fafafa; } </style> <body> <div class="wrap"> <table> <thead> <tr> <th> <input type="checkbox" id="cbAll" /> </th> <th>商品</th> <th>价钱</th> </tr> </thead> <tbody id="tb"> <tr> <td> <input type="checkbox" /> </td> <td>iPhone8</td> <td>8000</td> </tr> <tr> <td> <input type="checkbox" /> </td> <td>iPad Pro</td> <td>5000</td> </tr> <tr> <td> <input type="checkbox" /> </td> <td>iPad Air</td> <td>2000</td> </tr> <tr> <td> <input type="checkbox" /> </td> <td>Apple Watch</td> <td>2000</td> </tr> </tbody> </table> </div> <script> //获取元素 var cbAll = document.getElementById('cbAll'); //全选按钮 var tbs = document.getElementById('tb').getElementsByTagName('input'); //所有复选框按钮 //注册事件 //全选 cbAll.onclick = function () { for (var i = 0; i < tbs.length; i++) { tbs[i].checked = this.checked; } } //反选 for (var i = 0; i < tbs.length; i++) { tbs[i].onclick = function () { var flag = true //控制全选按钮 // 每次点击复选框都要检查是否全选 for (var i = 0; i < tbs.length; i++) { if (tbs[i].checked == false) { flag = false break } } cbAll.checked = flag } } </script> </body>
核心思想:(排他思想)
<style> *{ margin: 0; padding: 0; } li{ list-style-type: none; } .tab{ width:978px; margin: 100px auto; } .tab_list{ height: 39px; border: 1px solid #ccc; background-color: #f1f1f1; } .tab_list li{ float: left; height: 39px; line-height: 39px; padding: 0 20px; text-align: center; cursor: pointer; } .tab_list .current{ background-color: #c81623; color: #fff; } .item{ display: none; } .item_info{ padding: 20px 0 0 20px; } </style> <body> <div class="tab"> <div class="tab_list"> <ul> <li class="current">商品介绍</li> <li>规格与包装</li> <li>售后保障</li> <li>商品评价(50000)</li> <li>手机社区</li> </ul> </div> <div class="tab_con"> <div class="item" style="display: block;"> 商品介绍模块内容 </div> <div class="item"> 规格与包装模块内容 </div> <div class="item"> 售后保障模块内容 </div> <div class="item"> 商品评价(50000)模块内容 </div> <div class="item"> 手机社区模块内容 </div> </div> </div> <script> //获取元素 var lis = document.querySelector('.tab_list').querySelectorAll('li'); var items = document.querySelectorAll('.item'); //注册事件 for (var i = 0; i < lis.length; i++) { //给li元素设置索引号 lis[i].setAttribute('index', i); lis[i].onclick = function () { //选项卡内容 //清除所有li的current类 for (var i = 0; i < lis.length; i++) { lis[i].className = ''; } //给自身添加current类 this.className = 'current'; //显示内容 var index = this.getAttribute('index'); //清除其余item的内容 for (var i = 0; i < items.length; i++) { items[i].style.display = 'none'; } //让自身item的内容显示 items[index].style.display = 'block'; } } </script> </body>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
这篇文章主要为大家介绍了vue编译器util工具使用方法示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
这篇文章主要介绍了vue组件是如何解析及渲染的?,帮助大家更好的理解和使用vue,感兴趣的朋友可以了解下
目录vue控制mock在开发环境使用,在生产环境禁用说下原因解决方案vue中使用mock(常用方式)前期准备安装axios和mock.js插件在main.js中引入编写mock.js调用成功vue控制mock在开发环境使用,在生产环境禁用说下原因mock拦截所有的axios请求,根据请求,做出相应的响应。平时前后端分离
本篇文章聊聊node的基础,关于http模块及module.exports导出共享的理解和案例,希望对大家有所帮助!
这篇文章主要介绍JS数组去重,关于去重实际应用中,最常用的方法就是使用Set,也可以使用第三方库lodash来处理,下面一起来看看文章是怎么介绍JS数组去重的
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008