最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JavaScript實(shí)現(xiàn)網(wǎng)頁(yè)版簡(jiǎn)易計(jì)算器功能

 更新時(shí)間:2022年07月21日 17:06:47   作者:Mtreellen  
這篇文章主要介紹了JavaScript實(shí)現(xiàn)網(wǎng)頁(yè)版簡(jiǎn)易計(jì)算器功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了JavaScript實(shí)現(xiàn)網(wǎng)頁(yè)版計(jì)算器功能的具體代碼,供大家參考,具體內(nèi)容如下

運(yùn)行效果

運(yùn)行:直接將下面的代碼放到任意文本文件中,文件后綴名改為.html,然后用任意瀏覽器打開即可。

實(shí)現(xiàn)思路以及代碼

<!DOCTYPE html>
<html>
?? ?<head>
?? ??? ?<meta charset="UTF-8">
?? ??? ?<title>網(wǎng)頁(yè)版的簡(jiǎn)易計(jì)算器</title>
<!--使用js完成,之后可用:jquery-->
<!-
-->
<style>
?? ?/*設(shè)置input的寬度和高度*/
?? ?input{
?? ??? ?width: 396px;
?? ??? ?height: 50px;
?? ??? ?font-size: 30px;
?? ?}
?? ?
?? ?/*表格的行文本左右居中*/
?? ?tr{
?? ??? ?/*text-align*/
?? ??? ?text-align: center;
?? ?}
?? ?/*設(shè)置單元格的內(nèi)容寬度和高度以及字體大小*/
?? ?td{
?? ??? ?width: 100px;
?? ??? ?height: 119px;
?? ??? ?font-size:30px;
?? ?}
?? ?/*偽類選擇器:hover*/
?? ?td:hover{
?? ??? ?/*指定背景色*/
?? ??? ?background-color: greenyellow;
?? ??? ?/*cursor:pointer
?? ??? ? * 鼠標(biāo)經(jīng)過的時(shí)候,變成小手
?? ??? ? */
?? ??? ?cursor:pointer ;
?? ?}
</style>
?? ?</head>
<body>
<!--
cellspacing:單元邊沿和單元格之間的空間
cellpadding:單元格和單元格之間的空間
-->
<!--在input上面寫一個(gè)div: 指定這個(gè)當(dāng)前系統(tǒng)時(shí)間-->
<!--禁用文本框的輸入功能:disabled:disabled-->
<center><input type="text" value="0" id="show" disabled="disabled" /></center>
<table border="1px" cellspacing="0" cellpadding="2" align="center" width="400px"?
?? ?height="600px">
?? ?<tr>
?? ??? ?<td id="clear">C</td>
?? ??? ?<td id="del">退格</td>
?? ??? ?<td>%</td>
?? ??? ?<td class="operator">/</td>
?? ?</tr>
?? ?<tr>
?? ??? ?<td class="num">7</td>
?? ??? ?<td class="num">8</td>
?? ??? ?<td class="num">9</td>
?? ??? ?<td class="operator">*</td>
?? ?</tr>
?? ?<tr>
?? ??? ?<td class="num">4</td>
?? ??? ?<td class="num">5</td>
?? ??? ?<td class="num">6</td>
?? ??? ?<td class="operator">-</td>
?? ?</tr>
?? ?<tr>
?? ??? ?<td class="num">1</td>
?? ??? ?<td class="num">2</td>
?? ??? ?<td class="num">3</td>
?? ??? ?<td class="operator">+</td>
?? ?</tr>
?? ?<tr>
?? ??? ?<td colspan="2" class="num">0</td>
?? ??? ?<td class="num">.</td>
?? ??? ?<td id="result">=</td>
?? ?</tr>
</table>
</body>
<script>
?? ?/**
?? ? * -
?? ?1.頁(yè)面布局
?? ??? ?要么使用div+css,要么table布局
?? ??? ?table布局:5行4列的表格
?? ??? ?div+css布局:大的div ?嵌套兩個(gè)字div(輸入框的和鍵盤)
?? ?2.邏輯處理
?? ??? ?2.1 將數(shù)字鍵和小數(shù)點(diǎn)看成一類:clas="num"
?? ??? ?2.2 將運(yùn)算符看成一類:class="operator"
?? ??? ?2.3 將清除鍵,退格鍵,=(等號(hào)),顯示框,單獨(dú)設(shè)置id屬性
?? ??? ?2.4 獲取顯示框,清除鍵,=號(hào),推格鍵所在的標(biāo)簽對(duì)象
?? ??? ?2.5 獲取數(shù)字鍵所在的對(duì)象并設(shè)置點(diǎn)擊事件
?? ??? ?2.6 獲取運(yùn)算符所在的對(duì)象并設(shè)置點(diǎn)擊事件
?? ? */
//獲取顯示框所在的標(biāo)簽對(duì)象
var showResult = document.getElementById("show") ;
//獲取清除鍵所在的標(biāo)簽對(duì)象
var clear = document.getElementById("clear") ;
//獲取退格鍵所在的標(biāo)簽對(duì)象
var del = document.getElementById("del") ;
//獲取等號(hào)所在的對(duì)象
var result = document.getElementById("result") ;

//定義三個(gè)變量,分別保存第一個(gè)數(shù),第二個(gè)數(shù)以及運(yùn)算符
//第一個(gè)數(shù)
var numValue1 = "" ;
//第二個(gè)數(shù)
var numValue2 = "" ;
//操作符
var oper ="" ;

//獲取數(shù)字鍵,包含小數(shù)點(diǎn),并設(shè)置點(diǎn)擊事件
var nums = document.getElementsByClassName("num") ;
//遍歷數(shù)字,分別設(shè)置點(diǎn)擊事件
for(var i = 0 ; i< nums.length ; i++){
?? ?//設(shè)置點(diǎn)擊事件:使用匿名函數(shù)
?? ?nums[i].onclick = function(){
?? ??? ?
?? ??? ?//小數(shù)點(diǎn)的問題:只能出現(xiàn)一個(gè):
?? ??? ?/**
?? ??? ? * 如果這個(gè)this.innerTest==.
?? ??? ? * ?? ??? ?//小數(shù)點(diǎn)只能出現(xiàn)一個(gè)
?? ??? ? * 否則:
?? ??? ? * ?? ??? ?不是小數(shù)點(diǎn),就屬于整數(shù)運(yùn)算
?? ??? ? * ?? ??? ?numValue1 += this.innerText;
?? ??? ??? ??? ?showResult.value = numValue1*1 ; //去掉首尾無效0
?? ??? ? */
?? ??? ?
?? ??? ?
?? ??? ?
?? ??? ?//測(cè)試
//?? ??? ?alert("獲取到了每一個(gè)數(shù)字對(duì)象") ;
?? ??? ?//將點(diǎn)擊的數(shù)字顯示到文本框上
?? ??? ?//將nums[i]--->看成一個(gè)this:代表當(dāng)前數(shù)字鍵對(duì)象的內(nèi)存地址值
?? ??? ?//var text = this.innerText ; //普通文本
?? ??? ?//測(cè)試
//?? ??? ?alert(tesxt) ;
?? ??? ?//改變顯示框?qū)ο蟮膙alue屬性
?? ??? ?//showResult.value = text;
?? ??? ?
?? ??? ?//問題1:目前:用戶輸入第一個(gè)數(shù)只能是一位數(shù)的
?? ??? ?//將數(shù)字內(nèi)容賦值給第一個(gè)數(shù),然后將第一個(gè)數(shù)展示到文本框上
//?? ??? ?numValue1 = this.innerText ;
?? ??? ?numValue1 += this.innerText;
//?? ??? ?showResult.value = numValue1*1 ; //去掉首尾無效0
?? ??? ?showResult.value = numValue1 ; //去掉首尾無效0
?? ??? ?
?? ??? ?//問題2:小數(shù)點(diǎn)的問題(小數(shù)點(diǎn)只能出現(xiàn)一個(gè))
?? ??? ?
?? ??? ?
?? ?}
}


//獲取運(yùn)算符所在的對(duì)象并設(shè)置點(diǎn)擊事件
var operators = document.getElementsByClassName("operator") ;
//遍歷操作符,設(shè)置點(diǎn)擊事件
for(var i = 0 ; i < operators.length ; i++){
?? ?//設(shè)置點(diǎn)擊
?? ?operators[i].onclick = function(){
?? ??? ?
?? ??? ?/**
?? ??? ? * 判斷numValue2的值是否為空:
?? ? * ?? ??? ?如果是numValue2=="" ?? ?
?? ? * ?? ??? ?如果numValue2不是空字符串
?? ? * ?? ??? ??? ?用戶可能點(diǎn)擊等號(hào)或者運(yùn)算符
?? ??? ? */
?? ??? ?if(numValue2==""){
?? ??? ??? ??? ?numValue2 = numValue1 ;
?? ??? ??? ??? ?numValue1 = "" ;
?? ??? ??? ??? ?//保存操作符
?? ??? ??? ??? ?oper = this.innerText ;
?? ??? ?}else{
?? ??? ??? ?//用戶要么點(diǎn)擊=號(hào)要么進(jìn)行四則運(yùn)算
?? ??? ??? ?//問題:應(yīng)該將計(jì)算的結(jié)果賦值numValue2,清空numvalue1?
?? ??? ??? ?
?? ??? ??? ?if(numValue1!=""){
?? ??? ??? ??? ?resultFn() ;
?? ??? ??? ?}
?? ??? ??? ?
?? ??? ??? ?//保留操作符
?? ??? ??? ?oper = this.innerText ;
?? ??? ?}
?? ??? ?
?? ??? ?
?? ??? ?
?? ??? ?//測(cè)試
?? ??? ?//alert("運(yùn)算符獲取到了") ;
?? ??? ?//做運(yùn)算 :思考如何做運(yùn)算,最終處理
?? ??? ?//將第二個(gè)數(shù)賦值第一個(gè)數(shù),然后將第一個(gè)數(shù)清空,等待接收用戶下一次輸入的數(shù)據(jù)
?? ?/*?? ?numValue2 = numValue1 ;
?? ??? ?numValue1 = "" ;
?? ??? ?//保存操作符
?? ??? ?oper = this.innerText ;*/
?? ?}
}

//關(guān)于其他的操作:清除鍵
//設(shè)置清除鍵的點(diǎn)擊事件
clear.onclick = function(){

?? ?
?? ?//將第一個(gè)數(shù),第二個(gè)數(shù)以及運(yùn)算符都情況掉
?? ?//顯示框顯示默認(rèn)值0
?? ?numValue1 = "" ;
?? ?numValue2 = "" ;
?? ?oper = "" ;
?? ?showResult.value = "0" ;
}

//刪除鍵的邏輯,設(shè)置點(diǎn)擊事件
del.onclick = function(){
?? ?
//?? ??? ?alert("abc") ;
?? ?//可以用到String :substring()截取功能
?? ?if(numValue1.length!=1){
?? ??? ?//進(jìn)行截取:從0索引開始截取到當(dāng)前numValue1.length-1處的位置結(jié)束,將其值
?? ??? ?//賦值給numValue1
?? ??? ?//場(chǎng)景:刪除剩余一個(gè)數(shù)字即可
?? ? numValue1 = numValue1.substring(0,numValue1.length-1) ;
?? ??? ?//alert(numValue1) ;
?? ?//將numValue1顯示文本框上
//?? ?showResult.value = numValue1 *1 ; //去掉首位無效0
?? ?showResult.value = numValue1 ; //
}
//?? ?else{
//?? ??? ?//自己處理?? ?
?? ??? ?//將第一個(gè)數(shù),第二個(gè)數(shù),運(yùn)算符清空掉
//?? ?}
}

//給等號(hào)添加點(diǎn)擊事件,做四則運(yùn)算

result.onclick = function(){
?? ?
?? ?//抽取出一個(gè)方法
?? ?resultFn() ;
}

//具體做四則運(yùn)算的方法
function resultFn(){
?? ?
?? ?//定義運(yùn)算的兩個(gè)數(shù)據(jù): one ,two
?? ?//數(shù)據(jù)類型轉(zhuǎn)換
?? ?var one = new Number(numValue2)?? ?;//實(shí)際是第二個(gè)數(shù)
?? ?var two = new Number(numValue1) ;//實(shí)際第一個(gè)數(shù)
?? ?//保存計(jì)算結(jié)果
?? ?var r = null ;
?? ?//根據(jù)運(yùn)算符進(jìn)行判斷,switch語(yǔ)句
?? ?switch(oper){
?? ?case "+":
?? ??? ?r = one + two ;
?? ??? ?break ;
?? ?case "-":
?? ??? ?r = one - two ;
?? ??? ?break;
?? ?case "*":
?? ??? ?r = one * two ;
?? ??? ?break ;
?? ?case "/":
?? ??? ?//除數(shù)不能為0
?? ??? ?//判斷
?? ?/*?? ?if(two==0){
?? ??? ??? ?//將數(shù)據(jù)情況掉
?? ??? ??? ?//并且彈框提示;除數(shù)不能為0
?? ??? ??? ?
?? ??? ??? ?r = 0?
?? ??? ?}else{
?? ??? ??? ?one /two ;
?? ??? ?}*/
?? ??? ?r = one /two ;
?? ??? ?
?? ??? ?break ;
?? ?}
?? ?
?? ?//將計(jì)算結(jié)果展示到顯示框上
//?? ?showResult.value = r ;
?? ?
?? ?//將計(jì)算的結(jié)果進(jìn)行保留小數(shù)點(diǎn)的有戲位
//?? ?numValue2 = r ;
?? ?numValue2 = new Number(r).toFixed(6) ;
?? ?numValue1 = "" ; //numValue1清空了
?? ?showResult.value = numValue2*1; // numValue2*1

?? ?//問題1 :1.2 * 3 = 3.599999996
?? ?//問題2:去掉首尾無效0?? ?:parseFloat()
?? ?//問題3:在四則元素:判斷用戶如果是點(diǎn)擊等號(hào)或者點(diǎn)擊繼續(xù)運(yùn)算,每一次都將第一個(gè)數(shù)清空掉了,
?? ?//判斷第一個(gè)數(shù)是否為空
?? ?
?? ? //問題4:小數(shù)點(diǎn)問題:小數(shù)點(diǎn)只能出現(xiàn)一個(gè)
?? ?
//四則運(yùn)算的問題:
?? ?/**
?? ? * 用戶輸入兩個(gè)數(shù)據(jù)目前是直接處理結(jié)果,那么如何判斷用戶是要點(diǎn)擊=號(hào)還是繼續(xù)進(jìn)行四則運(yùn)算?
?? ? * ?? ?在運(yùn)算符點(diǎn)擊監(jiān)聽事件中去坐
?? ? * 判斷numValue2的值是否為空:
?? ? * ?? ??? ?如果是numValue2=="" ?? ?
?? ? * ?? ??? ?如果numValue2不是空字符串
?? ? * ?? ??? ??? ?用戶可能點(diǎn)擊等號(hào)或者運(yùn)算符
?? ? * ?? ??? ??? ??? ?
?? ? */
?? ?
}

</script>
</html>

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論

南丰县| 长治市| 福建省| 南澳县| 遂川县| 浦城县| 乌兰察布市| 冀州市| 灵川县| 淮北市| 廊坊市| 乌鲁木齐市| 霞浦县| 紫云| 桦南县| 广水市| 鄯善县| 广平县| 舞阳县| 临江市| 将乐县| 安龙县| 汉寿县| 南平市| 阳春市| 广东省| 山东省| 胶州市| 潞城市| 崇信县| 金溪县| 和田市| 田阳县| 广南县| 沙湾县| 内江市| 泽州县| 福鼎市| 花莲市| 浦江县| 纳雍县|