实例
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>利用javascript制作一个简单计算器</title> <style type="text/css"> .box { width: 600px; height: 200px; margin: 30px auto; background-color: #efefef; border: 1px solid lightgray;//加边框 text-align: center;//字体居中 color: #636363; border-radius: 15px;//圆角 box-shadow: 2px 2px 2px #999; //给加阴影 } table { margin: auto; } td { width: 150px; height: 30px; padding: 5px 10px; } input, select { width: 100%; height: 100%; border: none; text-align: left; padding-left: 15px; border-radius: 5px; } button { width: 50px; height: 100%; border: none; text-align: center; background-color: skyblue; border-radius: 5px; color: white; } button:hover { cursor: pointer;//将鼠标停在上面,显示成手掌形状 background-color: coral; } </style> </head> <body> <div class="box"> <form> <table> <caption>计算器</caption> <tr> <td><input type="text" name="tp1" placeholder="操作数1"></td> <td> <select name="option" id=""> <option value="null">请选择操作数</option> <option value="add">+</option> <option value="sub">-</option> <option value="mul">*</option> <option value="div">/</option> </select> </td> <td> <input type="text" name="tp2" placeholder="操作数2"> </td> <td><button type="button">计算</button></td> </tr> <tr> <td colspan="2" style="text-align: right"><h3>结果</h3></td> <td colspan="2" style="text-align: left"><h3 id="result"></h3></td> </tr> </table> </form> </div> <script> //定位操作数,按钮,结果占位符 //getElementsByName是以name来获取元素 //getElementsByTagName是以type类型来获取元素 //getElementById是以id标签名来获取元素 let tp1 = document.getElementsByName('tp1')[0];//获取input的name为tp1的元素并赋给变量tp1 let tp2 = document.getElementsByName('tp2')[0];//获取input的name为tp2的元素并赋给变量tp2 let set = document.getElementsByName('option')[0];//获取input的name为option的元素并赋给变量set let btn = document.getElementsByTagName('button')[0];//获取button的为type的元素并赋给变量btn let result = document.getElementById('result');//以ID来获取元素 //给按钮添加事件,进行计算 btn.onclick = function () {//点击btn来执行下来的代码onclick是点击的意思 let data1 = 0;//创建两个变量,来存tp1和tp2获取到的值 let data2 = 0; if (tp1.value.length === 0) {//tp1.value就是tp1里面的值,length就是获取里面值的长度 alert('第一个操作数不能为0');//弹窗 tp1.focus();//定位鼠标回到原来的地方 return false;//反回false } else if (isNaN(tp1.value)) {//isNaN是判断里面的值是否为数字 alert('第一个操作数必须为数字'); tp1.focus(); return false; } else if (tp2.value.length === 0){ alert('第二个操作数不能为0'); tp2.focus(); return false; } else if (isNaN(tp2.value)){ alert('第二个操作数必须为数字'); tp2.focus(); return false; } else { data1 = parseFloat(tp1.value); data2 = parseFloat(tp2.value); } let option = set.value;//将set里面的值赋给option变量 let temp = 0;//定义此变量是为了接收最终身的数据 let flag = '';//定义此变量是为了接收操作符号,最后用在结果中的拼结中 switch (option) { case 'null': alert('你还没有选择操作类型'); set.focus(); return false; case 'add': flag = '+'; temp = data1 + data2; break; case 'sub': flag = '-'; temp = data1 - data2; break; case 'mul': flag = '*'; temp = data1 * data2; break; case 'div': flag = '/'; if (tp2.value === 0){ alert('除数不能为0'); tp2.focus(); return false; } else { temp = data1 / data2; temp = Math.round(temp * 100) / 100; } break; } let str = '<span style="color: coral">'; str =str + data1 + '' + flag + '' + data2 + '=' + temp; str =str + '</span>'; result.innerHTML = str;//innerHTML将结果以HTML的形式返回,利用这个,才可以解释拼接出来的HTML代码 } </script> </body> </html>
运行实例 »
点击 "运行实例" 按钮查看在线实例
总结:在测试的过程中,会遇到一个问题,就是每次结果都会一闪而过,这种情况是要把提交按钮button的type设置成button,如果不设置会默认是submit.所以就会出现哪种情况 。
实例
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>制作一个在线明星相岫</title> <style> .box { margin: 50px auto; width: 500px; height: 650px; background-color: #efefef; border: 1px solid lightgray; text-align: center; color: #636363; box-shadow: 2px 2px 2px #999; } .box ul { margin: 0; padding: 0; overflow: hidden; } .box ul li { float: left; list-style-type: none; background-color: skyblue; margin-left: 20px; border-radius: 2px; } .box ul li a { display: block; width: 100px; height: 40px; line-height: 40px; color: white; text-decoration-line: none; } .box ul li:hover { background-color: coral; } .box .pic { width: 450px; height: 450px; border: 1px solid lightgray; margin: 20px auto; } .box .pic img { width: 100%; height: 100%; } </style> </head> <body> <div class="box"> <h2>明星相册</h2> <ul> <li><a href="images/zly.jpg" title="《楚乔传》,《花千骨》,《陆贞传奇》...">赵丽颖</a></li> <li><a href="images/gyy.jpg" title="《咱们结婚吧》,《倚天屠龙记》,《爱无悔》...">高圆圆</a></li> <li><a href="images/sl.jpg" title="《那年花开月正圆》,《甄嬛传》,《玉观音》...">孙俪</a></li> <li><a href="images/fbb.jpg" title="《还珠格格》,《武媚娘传奇》,《我不是潘金莲》...">范冰冰</a></li> </ul> <div class="pic"><img src="images/zwt.png" alt="" id="img"> </div> <p id="pic_info"></p> </div> <script> //获取页面中所有a标签 let pic = document.getElementsByTagName('a'); //利用a标签来循环标签 for (let i=0; i< pic.length; i++) { pic[i].onclick = function (event) { //获取图片信息 let picUrl = pic[i].href;//获取图片为i等于几的图片a标签 let picInfo = pic[i].title; let picName = pic[i].innerHTML;//元素内容 //获取页面中需要被替换的内容 let img = document.getElementById('img'); let p = document.getElementById('pic_info'); //将对应的图片和信息增加到点位符处进行替换 img.src = picUrl; p.innerHTML = picInfo+picName; return false;//禁用掉a的点击,默认行为。 } } </script> </body> </html>
运行实例 »
点击 "运行实例" 按钮查看在线实例