当前位置: 首页 > news >正文

js实践小案例

弹框输入信息,页面自动渲染表格

<!DOCTYPEhtml><html lang="zh-CN"><head><meta charset="UTF-8"><meta name="viewport"content="width=device-width, initial-scale=1.0"><title>Document</title><style>table{border-collapse:collapse;height:80px;margin:0auto;text-align:center;}table,th,td{border:1px solid black;}th{padding:5px 20px;}</style></head><body><script>letname=prompt('请输入商品名称:')letprice=+prompt('请输入商品价格:')letnum=+prompt('请输入商品数量:')letaddress=prompt('请输入地址:')lettotal=price*num document.write(`<table> <caption>表格信息</caption> <thead> <tr> <th>商品名称</th> <th>商品价格</th> <th>商品数量</th> <th>商品总价</th> <th>收货地址</th> </tr> </thead> <tbody> <tr> <td>${name}</td> <td>${price}</td> <td>${num}</td> <td>${total}</td> <td>${address}</td> </tr> </tbody> </table>`)</script></body></html>

效果图如下

简易计算器 case-break

letnum1=+prompt('请输入第一个数:')letnum2=+prompt('请输入第二个数:')letopt=prompt('请输入一个运算符:')switch(opt){case'+':alert(`和为${num1+num2}`)break;case'-':alert(`和为${num1-num2}`)break;case'*':alert(`和为${num1*num2}`)break;case'/':alert(`和为${num1/num2}`)break;default:alert('请输入正确的运算符')}

爱我吗

lettext=prompt('你爱我吗')//注意这里 text != '爱' || text != 'yes' || text != 'love' 如果是或,只要有一个为真结果就为真,所以运算的结果永远为真while(text!=='爱'&&text!=='yes'&&text!=='love'){text=prompt('你爱我吗')//用新的text覆盖旧的}alert('我也爱你')

还有一种写法是

while(true){//循环条件永远为真,一直循环直到遇见breakletstr=prompt('你爱我吗')if(str==='爱'){break}}

while(true)怎么理解?
只要没说停,就一直重复执行里面的代码

打印九九乘法表

span{display:inline-block;padding:5px 10px;border:1px solid lightgreen;margin:4px;border-radius:5px;box-shadow:2px 2px 2px lightpink;text-align:center;}
for(leti=1;i<=9;i++){for(letj=1;j<=i;j++){document.write(`<span>${i}×${j}=${i*j}</span>`)}document.write('<br>')}

对象

//k属性名 obj[k]属性值for(letkinobj){//console.log(k)//打印的是属性名,字符串类型//console.log(obj.k)//字符串型,相当于写了下面这行代码//console.log(obj.'uname') //undefined// console.log(obj['属性名']) 查的另一种方式,可以变成下面那一行//console.log(obj[k]) //获得属性名}

随机点名

letarr=['赵云','黄忠','关羽','张飞']letrandom=Math.floor(Math.random()*arr.length)document.write(arr[random])//不允许重复,抽到过的删掉pop shift splice(起始位置,删除几个)arr.splice(random,1)console.log(arr)

猜数字游戏

functiongetRandom(N,M){// 生成n到m的整数,直接取整,不是四舍五入returnMath.floor(Math.random()*(M-N+1))+N}letrandom=getRandom(1,10)letflag=truefor(leti=0;i<3;i++){constnum=+prompt('请输入1-10的数字')if(num===random){alert('猜对了')flag=falsebreak}elseif(num<random){alert('猜小了')}else{alert('猜大了')}}//3次之后flag仍然是trueif(flag){alert('次数用完了')}

随机生成排列名单

<divclass="app"><strong>协会</strong><h1>一等奖:<span id="one">???</span></h1><h3>二等奖:<span id="two">???</span></h3><h5>三等奖:<span id="three">???</span></h5></div><script>constpersonArr=['张三','李四','王五','赵六','孙七']constrandom1=Math.floor(Math.random()*personArr.length)constone=document.querySelector('#one')one.innerHTML=personArr[random1]personArr.splice(random1,1)constrandom2=Math.floor(Math.random()*personArr.length)consttwo=document.querySelector('#two')two.innerHTML=personArr[random2]personArr.splice(random2,1)constrandom3=Math.floor(Math.random()*personArr.length)constthree=document.querySelector('#three')three.innerHTML=personArr[random3]personArr.splice(random3,1)</script>

快速滚动抽取名字

constarr=['嫦娥','貂蝉','大乔','小乔','朵朵']//开始:让名字快速滚动+随即索引,开启定时器//结束:让滚动停止,关闭定时器,删除名字,判断是否还可以抽conststart=document.querySelector('.start')constend=document.querySelector('.end')constask=document.querySelector('.ask')lettimeID=nullletrandom=0start.addEventListener('click',function(){timeID=setInterval(()=>{random=Math.floor(Math.random()*arr.length)ask.innerHTML=`名字是:${arr[random]}`},35)//写在start里,在开始前进行判断,防止数组为空if(arr.length===1){start.disabled=trueend.disabled=true}})end.addEventListener('click',function(){clearInterval(timeID)arr.splice(random,1)})
<style> *{box-sizing:border-box;}body{margin:0;min-height:100vh;background:#ffffff;font-family:"Microsoft YaHei",Arial,sans-serif;}.card{position:relative;width:710px;height:310px;margin:10px auto 0;border:1px solid #cccccc;box-shadow:0 2px 4px #999999;padding-top:10px;}h1{margin:0;text-align:center;font-size:24px;line-height:34px;color:#111111;}.question{position:absolute;top:96px;left:44px;margin:0;font-size:25px;color:#333333;}button{position:absolute;top:188px;width:126px;height:38px;border:1px solid #888888;border-radius:3px;background:#eeeeee;color:#222222;font-size:14px;cursor:pointer;}.start{left:178px;}.end{left:414px;}</style>

筛选不同价格区间的商品

functionrender(arr){letstr=''arr.forEach(item=>{const{price,name,picture}=item str+=`<div class="item"> <img src=${picture}alt="${item.name}"> <p class="name">${name}</p> <p class="price">${price}</p> </div>`})document.querySelector('.list').innerHTML=str}render(goodsList)//筛选document.querySelector('.filter').addEventListener('click',function(e){const{tagName,dataset}=e.targetif(tagName==='A'){// 移除所有 a 的 activedocument.querySelectorAll('.filter a').forEach(a=>{a.classList.remove('active')})letarr2=goodsListif(dataset.index==='1'){arr2=arr2.filter(item=>item.price>0&&item.price<100)}elseif(dataset.index==='2'){arr2=arr2.filter(item=>item.price>=100&&item.price<300)}elseif(dataset.index==='3'){arr2=arr2.filter(item=>item.price>=300)}render(arr2)}})

效果图如下

http://www.cnnetsun.cn/news/4212099.html

相关文章:

  • 无偏教师 v2:适用于无锚框和基于锚框检测器的半监督目标检测
  • Agent 敢开写权限吗?—— 深入探讨 AI 代理的自主操作风险与安全边界
  • C++初阶——类和对象(下)
  • AI 编程不得不知道的二三事
  • 隐匿中的生长:当代青年 “偷感” 现象解读
  • 2021CSP-J初赛真题解析(适合复习、巩固、备考)
  • 麒麟(Kylin)服务器系统网卡地址设置
  • 女孩子可以考什么证书比较简单
  • Ansible实战:LNMP一键部署指南
  • 汉森制药(002412)深度研究报告
  • 理解 JWT:三段分别是什么
  • 计算机毕业设计之企业社交网络平台的设计与实现
  • HarmonyOS 性能优化工具链:从「手工排查」到「工程化治理」的全栈实战指南
  • 01-具身机器人硬件全景拆解
  • ABAP 里有没有 AI Agent 的 Progressive Disclosure,一套从封装、Released API 到 RAP 暴露层的完整对照
  • 从奈奎斯特判据到无源性:为什么只需保证逆变器导纳无源就能稳定并网?
  • 【python】条件语句
  • 【2015-03-02】《RealView编译工具汇编器指南》摘录:内置变量和常数
  • 手机玩鸣潮 3.6 版本,随时随地开荒新地图不卡顿
  • AIGC 到底是什么:从传统软件到生成式人工智能
  • 规模化养殖冰爽强甘多少钱
  • Go单例模式:sync.Once与双重检查
  • 【第9篇】 EfficientViT(ICCV 2023):基于多尺度线性注意力的高效高分辨率密集预测网络
  • 封神了!Scrapling 火了,AI 时代的数据采集神器来了
  • 经验丰富的杭州园林景观工程公司排名哪个好
  • DC/DC电源怎么选?如何在效率、体积、隔离和EMI之间做平衡?
  • 【代码评测】AI 写代码更快以后,为什么 Review 反而成为瓶颈?
  • 大宗交易折溢价因子怎么挖掘本地化Python全流程实战 IG50免费开源股票数据API接口
  • SRC挖洞变现:业务逻辑漏洞报告怎么写才能评上高危?(附5类报告模板)
  • Claude Code文档访问失败?开发者必备的版本管理与信息同步方案