编码
首先练习数字相关的一些操作:
<div>
<label>Number A:<input id="radio-a" type="radio" name="math-obj" value="a"></label><input id="num-a" type="text">
<label>Number B:<input id="radio-b" type="radio" name="math-obj" value="b"></label><input id="num-b" type="text">
</div>
<div>
<button>判断当前选中的输入框输入内容是否为数字</button>
<button>把 A 四舍五入为 B 个小数位数的数字</button>
<button>当前选中数字的绝对值</button>
<button>对当前选中的数字进行上舍入</button>
<button>对当前选中的数字进行下舍入</button>
<button>把当前选中的数字四舍五入为最接近的整数</button>
<button>返回 A 和 B 中的最高值</button>
<button>返回 A 和 B 中的最低值</button>
</div>
<p id="result"></p>
基于如上HTML,实现需求
- 按照HTML中按钮的描述以此实现功能
- 计算结果显示在 id 为 result 的 P 标签中
- 除了第一个按钮,其它按钮操作时,都需要判断输入是否为数字,否则在 console 中输出错误信息
1 <!DOCTYPE html> 2 <html> 3 4 <head> 5 <meta charset="utf-8" /> 6 <title>JS里的居民们1</title> 7 8 </head> 9 10 <body> 11 <div> 12 <label>Number A:<input id="radio-a" type="radio" name="math-obj" value="a"></label><input id="num-a" type="text"> 13 <label>Number B:<input id="radio-b" type="radio" name="math-obj" value="b"></label><input id="num-b" type="text"> 14 </div> 15 <div> 16 <button>判断当前选中的输入框输入内容是否为数字</button> 17 <button>把 A 四舍五入为 B 个小数位数的数字</button> 18 <button>当前选中数字的绝对值</button> 19 <button>对当前选中的数字进行上舍入</button> 20 <button>对当前选中的数字进行下舍入</button> 21 <button>把当前选中的数字四舍五入为最接近的整数</button> 22 <button>返回 A 和 B 中的最高值</button> 23 <button>返回 A 和 B 中的最低值</button> 24 </div> 25 <p id="result"></p> 26 27 <script> 28 //定义常量 29 const numA = document.getElementById("num-a"); 30 numB = document.getElementById("num-b"); 31 radioA = document.getElementById("radio-a"); 32 radioB = document.getElementById("radio-b"); 33 buttons = document.getElementsByTagName("button"); //按钮数组 34 p = document.getElementById("result"); 35 //定义数字检查 36 function isNumber(num) { 37 if (!isNaN(num.value) && num.value != "") { 38 return true; 39 } else { 40 return false; 41 } 42 } 43 //定义勾选检查 44 function isCheck(check) { 45 if (check.checked) { 46 return true; 47 } else { 48 return false; 49 } 50 } 51 //按钮1监听点击,实现判断当前选中的输入框输入内容是否为数字 52 buttons[0].addEventListener("click", function () { 53 if (isCheck(radioA)) { 54 if (isNumber(numA)) { 55 p.innerHTML = "这是一个数字"; 56 } else { 57 p.innerHTML = "这不是一个数字"; 58 console.log("这不是一个数字哈!"); 59 } 60 } 61 if (isCheck(radioB)) { 62 if (isNumber(numB)) { 63 p.innerHTML = "这是一个数字"; 64 } else { 65 p.innerHTML = "这不是一个数字"; 66 console.log("这不是一个数字哈!"); 67 } 68 } 69 }) 70 //按钮2监听点击,实现把A四舍五入为B个小数位数的数字 71 buttons[1].addEventListener("click", function () { 72 if (isNumber(numA) && isNumber(numB)) { 73 var A = parseFloat(numA.value); 74 p.innerHTML = A.toFixed(parseInt(numB.value)); 75 } else { 76 console.log("必须均为数字哦!") 77 } 78 }) 79 //按钮3监听点击,实现当前选中数字的绝对值 80 buttons[2].addEventListener("click", function () { 81 if (isCheck(radioA)) { 82 if (isNumber(numA)) { 83 p.innerHTML = Math.abs(Number(numA.value)); 84 } else { 85 console.log("非数字!"); 86 } 87 } 88 if (isCheck(radioB)) { 89 if (isNumber(numB)) { 90 p.innerHTML = Math.abs(Number(numB.value)); 91 } else { 92 console.log("非数字!"); 93 } 94 } 95 }) 96 //按钮4监听点击,实现对当前选中的数字进行上舍入 97 buttons[3].addEventListener("click", function () { 98 if (isCheck(radioA)) { 99 p.innerHTML = Math.ceil(Number(numA.value)); 100 } 101 if (isCheck(radioB)) { 102 p.innerHTML = Math.ceil(Number(numB.value)); 103 } 104 }) 105 //按钮5监听点击,实现对当前选中的数字进行下舍入 106 buttons[4].addEventListener("click", function () { 107 if (isCheck(radioA)) { 108 p.innerHTML = Math.floor(Number(numA.value)); 109 } 110 if (isCheck(radioB)) { 111 p.innerHTML = Math.floor(Number(numB.value)); 112 } 113 }) 114 //按钮6监听点击,实现把当前选中的数字四舍五入为最接近的整数 115 buttons[5].addEventListener("click", function () { 116 if (isCheck(radioA)) { 117 p.innerHTML = Math.round(Number(numA.value)); 118 } 119 if (isCheck(radioB)) { 120 p.innerHTML = Math.round(Number(numB.value)); 121 } 122 }) 123 //按钮7监听点击,实现返回A和B中的最高值 124 buttons[6].addEventListener("click", function () { 125 p.innerHTML = Math.max(Number(numA.value), Number(numB.value)); 126 }) 127 //按钮8监听点击,实现返回A和B中的最小值 128 buttons[7].addEventListener("click", function () { 129 p.innerHTML = Math.min(Number(numA.value), Number(numB.value)); 130 }) 131 </script> 132 </body> 133 134 </html>
注意点:Math.round()判断有小数点大于等于0.5的,向上取整数。比如Math.round(-1.5)=-1;Math.round(1.5)=2