主頁 > 企業開發 > JS撰寫的科學計算器

JS撰寫的科學計算器

2021-01-01 07:20:29 企業開發

最近半個月撰寫了一個JS+CSS+HTML的網頁計算器,從最初的具有簡陋界面的簡單計算器改版到最終具有科學/標準計算器轉換功能并且界面非常友好的計算器,識訓良多!總的來說,代碼簡單,通俗易讀,下面貼上代碼,供前端新手學習!歡迎提出寶貴意見,不吝指正!

 

 

 HTML代碼(代碼中僅僅是計算器界面內容布局):

<html>
<head>
	<title>計算器</title>
 <link href="https://www.cnblogs.com/smileZAZ/archive/2020/12/31/style.css" rel="stylesheet" type="text/css"/>
  <script src="https://www.cnblogs.com/smileZAZ/archive/2020/12/31/script.js"></script>
 
</head>
 
<body>
 
<div id="calculator">
	<a href="http://write.blog.csdn.net/postlist" id='record'>計Sweet Smile</a>
	<div >
		<textarea type="text" id="result0" οnfοcus="this.blur();"></textarea>
		<textarea type="text" id="result" οnfοcus="this.blur();"></textarea>
	</div>
 	<div>
		<section >           <!--包含按鈕的一個長形區域-->
		  <div   οnclick="styleChange()">			
		  <!--包含按鈕的一個較小長形區域-->
		    <input type="checkbox"/>
		    <label>科學標準</label>					<!--按鈕底部的灰色滑動區-->
		  </div>
		</section>
	</div>
 
	<!--標準計算器布局-->
 	<div id="rows" style="display:inline;">
	<div >
		<button id="bt1" οnclick="zero()">C</button>
		<button id="bt2" οnclick="back()">DEL</button>
		<button id="bt3" οnclick="divide()">÷</button>
		<button id="bt4" οnclick="times()">×</button>
	</div>
	<div >
		<button id="bt5" οnclick="num(7)">7</button>
		<button id="bt6" οnclick="num(8)">8</button>
		<button id="bt7" οnclick="num(9)">9</button>
		<button id="bt8" οnclick="plus()">+</button>
	</div>
	<div >
		<button id="bt9" οnclick="num(4)">4</button>
		<button id="bt10" οnclick="num(5)">5</button>
		<button id="bt11" οnclick="num(6)">6</button>
		<button id="bt12" οnclick="minus()">-</button>
	</div>
 
	<div id="below">
		<div id="left">
			<div >
				<button id="bt13" οnclick="num(1)">1</button>
				<button id="bt14" οnclick="num(2)">2</button>
				<button id="bt15" οnclick="num(3)">3</button>
			</div>
			<div >
				<button id="bt16" οnclick="num(0)">0</button>
				<button id="bt17" οnclick="dot()">.</button>
			</div>
		</div>
		<div id="right">
			<button id="bt18" οnclick="equal()">=</button>
		</div>
	</div>
 
	</div>
 
	<!--科學計算器布局-->
	<div id="sci"  style="display:none;">
		<div >
				<button id="bt21" οnclick="zero()">C</button>
				<button id="bt22" οnclick="back()">DEL</button>
				<button id="bt23" οnclick="pow1()">^</button>
				<button id="bt24" οnclick="num('π')">π</button>
				<button id="bt25" οnclick="pow2()">√</button>
		</div>
		<div >
				<button id="bt26" οnclick="sin()">sin</button>
				<button id="bt27" οnclick="num('(')">(</button>
				<button id="bt28" οnclick="num(')')">)</button>
				<button id="bt29" οnclick="divide1()">1/X</button>
				<button id="bt30" οnclick="divide()">÷</button>
		</div>
		<div >
				<button id="bt31" οnclick="cos()">cos</button>
				<button id="bt32" οnclick="num(7)">7</button>
				<button id="bt33" οnclick="num(8)">8</button>
				<button id="bt34" οnclick="num(9)">9</button>
				<button id="bt35" οnclick="times()">×</button>
		</div>
		<div >
				<button id="bt36" οnclick="tan()">tan</button>
				<button id="bt37" οnclick="num(4)">4</button>
				<button id="bt38" οnclick="num(5)">5</button>
				<button id="bt39" οnclick="num(6)">6</button>
				<button id="bt40" οnclick="minus()">-</button>
		</div>
		<div >
				<button id="bt41" οnclick="ln()">ln</button>
				<button id="bt42" οnclick="num(1)">1</button>
				<button id="bt43" οnclick="num(2)">2</button>
				<button id="bt44" οnclick="num(3)">3</button>
				<button id="bt45" οnclick="plus()">+</button>
		</div>
		<div >
				<button id="bt46" οnclick="log()">log</button>
				<button id="bt47" οnclick="num(0)">0</button>
				<button id="bt48" οnclick="dot()">.</button>
				<button id="bt49" οnclick="quyu()">%</button>
				<button id="bt50" οnclick="equal()">=</button>
		</div>
 
	</div>
 
	
</div>
 
</body>
</html>

下面是JS代碼(代碼陳述句都是非常簡單的基礎語法):

//改進: 定義一個變數記錄“=”的輸入與否而不必每輸入數字時都要檢索一遍文本框內容
 
 
var status=0;	//標記所輸入的是數字還是運算子號
var calcu=0;	//標記所要執行的方法是哪一個
 
 
/*數字、括號及PI的輸入*/
function num(x){
	var str0=document.getElementById('result0').value;
	var str=document.getElementById('result').value;
	if(str0.indexOf("=")>0){
		document.getElementById('result0').value='';
		document.getElementById('result').value='https://www.cnblogs.com/smileZAZ/archive/2020/12/31/0';
		str=document.getElementById('result').value;
	}
	if(str=="0")
		str='';
 	str+=String(x);
 	document.getElementById('result').value=https://www.cnblogs.com/smileZAZ/archive/2020/12/31/str;
 	status=0;
}
//輸入. (未做是否包含“.”的判斷)
function dot(){
	var str0=document.getElementById('result0').value;
	var str=document.getElementById('result').value;
	if(str0.indexOf("=")>0){
		document.getElementById('result0').value='';
		document.getElementById('result').value='https://www.cnblogs.com/smileZAZ/archive/2020/12/31/0';
		str=document.getElementById('result').value;
	}
	str=str+'.';
 	document.getElementById('result').value=https://www.cnblogs.com/smileZAZ/archive/2020/12/31/str;
}
 
 
/*三角函式以及'1/'計算*/
function sin(){
	calcu=1;
	cal();
}
function cos(){
	calcu=2;
	cal();
}
function tan(){
	calcu=3;
	cal();
}
function divide1(){
	calcu=4;
	cal();
}
function ln(){
	calcu=5;
	cal();
}
function log(){
	calcu=6;
	cal();
}
function cal(){
	var str0=document.getElementById('result0').value;
	var str=document.getElementById('result').value;
	if(str0.indexOf("=")>0){
		document.getElementById('result0').value='';
		document.getElementById('result').value='https://www.cnblogs.com/smileZAZ/archive/2020/12/31/0';
		str=document.getElementById('result').value;
	}
	if(str=="0")
		str='';
	switch(calcu){                                   
        case 1: str+=String("sin(");break;               
        case 2: str+=String("cos(");break;               
        case 3: str+=String("tan(");break; 
        case 4: str+=String("1/");break;
        case 5: str+=String("ln(");break;
        case 6: str+=String("log(");break;
    }   
 	document.getElementById('result').value=https://www.cnblogs.com/smileZAZ/archive/2020/12/31/str;
 	status=1;
}
 
 
/*   ^、√以及%的輸入   */
function pow1(){
	calcu=1;
	powS();
}
function pow2(){
	calcu=2;
	powS();
}
function quyu(){
	calcu=3;
	powS();
}
function powS(){
	if(status == 1)
		return;
	var strpow0=document.getElementById('result0').value;
	var strpow=document.getElementById('result').value;
	if(strpow0.indexOf("=")>0){
		document.getElementById('result0').value='';
		/*document.getElementById('result').value='https://www.cnblogs.com/smileZAZ/archive/2020/12/31/0';*/
		strpow=document.getElementById('result').value;
	}
	switch(calcu){
		case 1: strpow+=String('^');
 			    break;
		case 2: if(strpow=='0')
			  		strpow="√";
			  	else{
			  		strpow+=String('√');
			  	}
			    break;
		case 3: strpow+=String("%");
				break;
	}
	document.getElementById('result').value=https://www.cnblogs.com/smileZAZ/archive/2020/12/31/strpow;
	status=1;
}
 
 
 
 
/*   +-×÷ 運算   */
function plus(){
	calcu=1;
	calculate();
}
function times(){
	calcu=2;
	calculate();
}
function divide(){
	calcu=3;
	calculate();		
}
function calculate(){
	if(status==1)
		return;
	var str0=document.getElementById('result0').value;
	var str=document.getElementById('result').value;
	if(str0.indexOf("=")>0 ){
		document.getElementById('result0').value='';
		/*document.getElementById('result').value='https://www.cnblogs.com/smileZAZ/archive/2020/12/31/0';*/
		str=document.getElementById('result').value;
	}
	if(str=='')
		str='0';
	switch(calcu){
		case 1: str+='+';break;
		case 2: str+='×';break;
		case 3: str+='÷';break;
	}
 	document.getElementById('result').value=https://www.cnblogs.com/smileZAZ/archive/2020/12/31/str;
 	status=1;
}
function minus(){
	var str0=document.getElementById('result0').value;
	var str=document.getElementById('result').value;
	if(str0.indexOf("=")>0){
		document.getElementById('result0').value='';
		/*document.getElementById('result').value='https://www.cnblogs.com/smileZAZ/archive/2020/12/31/-';*/
		str=document.getElementById('result').value+'-';
	}
 	else
 		str+='-';
 	document.getElementById('result').value=https://www.cnblogs.com/smileZAZ/archive/2020/12/31/str;
}
 
 
//顯示屏字串為空
function zero(){
	document.getElementById('result0').value="";
 	document.getElementById('result').value="https://www.cnblogs.com/smileZAZ/archive/2020/12/31/0";
}
 
 
//顯示屏字串減去最后一個字符
function back(){
	var str0=document.getElementById('result0').value;
	var str=document.getElementById('result').value;
	if(str0.indexOf("=")>0 || str=='')
		return;
	var str1=str.substr(0,(str.length)-1)
 	document.getElementById('result').value=https://www.cnblogs.com/smileZAZ/archive/2020/12/31/str1;
}
 
 
//獲取當前顯示屏字符,判斷所包含運算子,并做相關運算,
function equal(){
	var str0=document.getElementById('result').value;
	if(str0=="")
		return;
	var str=str0.replace(/×/g,'*');		//用正則運算式進行全部替換
	str=str.replace(/÷/g,'/');
	str=str.replace(/π/g,'Math.PI');
	if(str.indexOf("sin")>=0){
		str=str.replace(/sin/g,'Math.round(Math.sin');
		str+='*1000000)/1000000';
 
 
		document.getElementById('result0').value=https://www.cnblogs.com/smileZAZ/archive/2020/12/31/str0.concat("=");
		document.getElementById('result').value=https://www.cnblogs.com/smileZAZ/archive/2020/12/31/eval(str);
		
	}
	else if(str.indexOf("cos")>=0){
		str=str.replace(/cos/g,'Math.round(Math.cos');
		str+='*1000000)/1000000';
		document.getElementById('result0').value=https://www.cnblogs.com/smileZAZ/archive/2020/12/31/str0.concat("=");
		document.getElementById('result').value=https://www.cnblogs.com/smileZAZ/archive/2020/12/31/eval(str);
	}
	else if(str.indexOf("tan")>=0){
		str=str.replace(/tan/g,'Math.round(Math.tan');
		str+='*1000000)/1000000';
		document.getElementById('result0').value=https://www.cnblogs.com/smileZAZ/archive/2020/12/31/str0.concat("=");
		document.getElementById('result').value=https://www.cnblogs.com/smileZAZ/archive/2020/12/31/eval(str);
	}
	else if(str.indexOf("^")>=0){
		var pos=str0.indexOf('^');
		var pow1=str0.substring(0,pos);
		var pow2=str0.substring(pos+1,str0.length+1);
		result=Math.pow(pow1, pow2);
		document.getElementById('result0').value=https://www.cnblogs.com/smileZAZ/archive/2020/12/31/str0.concat("=");
		document.getElementById('result').value=https://www.cnblogs.com/smileZAZ/archive/2020/12/31/eval(result);
	}
	else if(str.indexOf("√")>=0){
		var pos=str0.indexOf('√');
		var pow1=str0.substring(0,pos);
		var pow2=str0.substring(pos+1,str0.length+1);
		if(pow1==''){
			result=Math.pow(pow2,0.5);
			document.getElementById('result0').value=https://www.cnblogs.com/smileZAZ/archive/2020/12/31/str0.concat("=");
			document.getElementById('result').value=https://www.cnblogs.com/smileZAZ/archive/2020/12/31/eval(result);
		}
		else{
			result=Math.pow(pow2, 1/pow1);
			document.getElementById('result0').value=https://www.cnblogs.com/smileZAZ/archive/2020/12/31/str0.concat("=");
			document.getElementById('result').value=https://www.cnblogs.com/smileZAZ/archive/2020/12/31/eval(result);
		}
	}
	else if(str.indexOf("ln")>=0){
		var str=str0.replace(/ln/g,'Math.round(Math.log');
		str+='*1000000)/1000000';
		document.getElementById('result0').value=https://www.cnblogs.com/smileZAZ/archive/2020/12/31/str0.concat("=");
		document.getElementById('result').value=https://www.cnblogs.com/smileZAZ/archive/2020/12/31/eval(str);
	}
	else if(str.indexOf("log")>=0){
		var str=str0.replace(/log/g,'Math.log');
		str+= '/Math.log(10)';
		document.getElementById('result0').value=https://www.cnblogs.com/smileZAZ/archive/2020/12/31/str0.concat("=");
		document.getElementById('result').value=https://www.cnblogs.com/smileZAZ/archive/2020/12/31/eval(str);
	}
	else{
		result=(eval(str));
		document.getElementById('result0').value=https://www.cnblogs.com/smileZAZ/archive/2020/12/31/str0.concat("=");
		document.getElementById('result').value=https://www.cnblogs.com/smileZAZ/archive/2020/12/31/result;
	}
	var a=document.getElementById('result').value;
	if(a=="Infinity")
		document.getElementById('result').value='https://www.cnblogs.com/smileZAZ/archive/2020/12/31/∞';
	else if(a=="-Infinity")
		document.getElementById('result').value='https://www.cnblogs.com/smileZAZ/archive/2020/12/31/-∞';
}
function styleChange(){
	if(document.getElementById('rows').style.display=='inline'){
		document.getElementById('rows').style.display='none';
		document.getElementById('sci').style.display='inline';
	}
	else if(document.getElementById('rows').style.display=='none'){
		document.getElementById('rows').style.display='inline';
		document.getElementById('sci').style.display='none';
	}
}

下面是CSS代碼(其中按鈕效果部分參考了純CSS滑動按鈕特效代碼):

body { 
 
	font-size:24px; 
	font-family:Arial, Georgia, "Times New Roman", Times, serif; 
	color:#555; 	
	text-align:center; 		
	background-color:#555; 		
}
body div{
	align:center;
	margin-top:5px;	
} 
#calculator{
	align:center;
	width:350px;
  height:550px;
	margin:10px auto;
	border:#fff 2px solid;	
	overflow:hidden;      
	background-color:#f2f2f2; 	
 
}
 
.rescult{
	align:center;
	padding:10px 5px 0px 5px;
}
#result,#result0{
	width:300px;
	height:40px;
	font-size:35px;
	text-align:right;
	direction:ltr; 
	border:#C0C0C0;
	overflow:hidden;      
	background-color:#C0C0C0;
	word-wrap : normal;	
}
#result0{
  font-size:25px;
}
section {
  float: left;
  width:100px;
  padding: 0px 200px 10px 20px;
  height: 50px;
}
 
.checkbox {
  position: relative;
  display: inline-block;    
}
 
.checkbox label {
  font-size:20px;
  text-align: center;
  padding-top: 5px;
  width: 90px;
  height: 30px;
  position: relative;
  display: inline-block;
  border-radius: 46px;        
  -webkit-transition: 0.4s;   
  transition: 0.4s;
}
.checkbox label:after {    
  content: '';
  position: absolute;
  padding-top: 20px;
  width: 45px;
  height: 20px;
  border-radius: 40%;
  left: 0;                
  top: -5px;
  z-index: 2;       
  background: #f2f2f2;   
  box-shadow: 0 0 5px rgba(0, 0, 0, 0.2);   
  -webkit-transition: 0.4s;  
  transition: 0.4s;
}
.checkbox input {
  position: absolute;
  left: 0;
  top: 0;
  width: 100%;      
  height: 100%;
  z-index: 5;       
  opacity: 0;      
  cursor: pointer;  
}
 
.checkbox input:hover + label:after {
  box-shadow: 0 2px 15px 0 rgba(0, 0, 0, 0.2), 0 3px 8px 0 rgba(0, 0, 0, 0.2);
}
.checkbox input:checked + label:after {
  left: 45px;                    
}
.model-1 .checkbox input:checked + label {
  background:#ccc ;          
}
.model-1 .checkbox input:checked + label:after {
  background:#f2f2f2;          
}
 
 
 
#rows{
  
	align:center;
	padding:0 3px;
 
}
#below{
	margin-top:0px;
	margin-left:25px;
	margin-bottom: 30px;
	width:300px;
}
#left{
	margin-top:0px;
	float:left;
}
#right{
	margin-top:10px;
	float:right;
}
.row1,.row2,.row3,#below{
	align:center;	
}
.row3{
	margin-bottom: 0px;
}
#bt1,#bt2,#bt3,#bt4,#bt5,#bt6,#bt7,#bt8,#bt9,#bt10,#bt11,#bt12,#bt13,#bt14,#bt15,#bt16,#bt17,#bt18{
	font-size:18px;
	width:70px;
	height:70px;
	background-color:#eaeaea; 
	cursor:pointer;
 
}
#bt16{
	width:145px;
}
#bt18{
	height:140px;
}
#sci{
    display:none;
}
#sci button{
  font-size:18px;
  width:55px;
  height:55px;
  background-color:#eaeaea; 
  cursor:pointer;
 
}
#record{
  float:right;
  font-size:15px;
  color:#555;
}
#record:hover{
  color:red;
}

轉載于:https://blog.csdn.net/sweet___smile/article/details/50417211

轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/243205.html

標籤:其他

上一篇:瀏覽器原理、重繪、回流、性能優化-學習總結

下一篇:百度地圖 - 基礎學習(1): 地圖開發環境搭建

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • IEEE1588PTP在數字化變電站時鐘同步方面的應用

    IEEE1588ptp在數字化變電站時鐘同步方面的應用 京準電子科技官微——ahjzsz 一、電力系統時間同步基本概況 隨著對IEC 61850標準研究的不斷深入,國內外學者提出基于IEC61850通信標準體系建設數字化變電站的發展思路。數字化變電站與常規變電站的顯著區別在于程序層傳統的電流/電壓互 ......

    uj5u.com 2020-09-10 03:51:52 more
  • HTTP request smuggling CL.TE

    CL.TE 簡介 前端通過Content-Length處理請求,通過反向代理或者負載均衡將請求轉發到后端,后端Transfer-Encoding優先級較高,以TE處理請求造成安全問題。 檢測 發送如下資料包 POST / HTTP/1.1 Host: ac391f7e1e9af821806e890 ......

    uj5u.com 2020-09-10 03:52:11 more
  • 網路滲透資料大全單——漏洞庫篇

    網路滲透資料大全單——漏洞庫篇漏洞庫 NVD ——美國國家漏洞庫 →http://nvd.nist.gov/。 CERT ——美國國家應急回應中心 →https://www.us-cert.gov/ OSVDB ——開源漏洞庫 →http://osvdb.org Bugtraq ——賽門鐵克 →ht ......

    uj5u.com 2020-09-10 03:52:15 more
  • 京準講述NTP時鐘服務器應用及原理

    京準講述NTP時鐘服務器應用及原理京準講述NTP時鐘服務器應用及原理 安徽京準電子科技官微——ahjzsz 北斗授時原理 授時是指接識訓通過某種方式獲得本地時間與北斗標準時間的鐘差,然后調整本地時鐘使時差控制在一定的精度范圍內。 衛星導航系統通常由三部分組成:導航授時衛星、地面檢測校正維護系統和用戶 ......

    uj5u.com 2020-09-10 03:52:25 more
  • 利用北斗衛星系統設計NTP網路時間服務器

    利用北斗衛星系統設計NTP網路時間服務器 利用北斗衛星系統設計NTP網路時間服務器 安徽京準電子科技官微——ahjzsz 概述 NTP網路時間服務器是一款支持NTP和SNTP網路時間同步協議,高精度、大容量、高品質的高科技時鐘產品。 NTP網路時間服務器設備采用冗余架構設計,高精度時鐘直接來源于北斗 ......

    uj5u.com 2020-09-10 03:52:35 more
  • 詳細解讀電力系統各種對時方式

    詳細解讀電力系統各種對時方式 詳細解讀電力系統各種對時方式 安徽京準電子科技官微——ahjzsz,更多資料請添加VX 衛星同步時鐘是我京準公司開發研制的應用衛星授時時技術的標準時間顯示和發送的裝置,該裝置以M國全球定位系統(GLOBAL POSITIONING SYSTEM,縮寫為GPS)或者我國北 ......

    uj5u.com 2020-09-10 03:52:45 more
  • 如何保證外包團隊接入企業內網安全

    不管企業規模的大小,只要企業想省錢,那么企業的某些服務就一定會采用外包的形式,然而看似美好又經濟的策略,其實也有不好的一面。下面我通過安全的角度來聊聊使用外包團的安全隱患問題。 先看看什么服務會使用外包的,最常見的就是話務/客服這種需要大量重復性、無技術性的服務,或者是一些銷售外包、特殊的職能外包等 ......

    uj5u.com 2020-09-10 03:52:57 more
  • PHP漏洞之【整型數字型SQL注入】

    0x01 什么是SQL注入 SQL是一種注入攻擊,通過前端帶入后端資料庫進行惡意的SQL陳述句查詢。 0x02 SQL整型注入原理 SQL注入一般發生在動態網站URL地址里,當然也會發生在其它地發,如登錄框等等也會存在注入,只要是和資料庫打交道的地方都有可能存在。 如這里http://192.168. ......

    uj5u.com 2020-09-10 03:55:40 more
  • [GXYCTF2019]禁止套娃

    git泄露獲取原始碼 使用GET傳參,引數為exp 經過三層過濾執行 第一層過濾偽協議,第二層過濾帶引數的函式,第三層過濾一些函式 preg_replace('/[a-z,_]+\((?R)?\)/', NULL, $_GET['exp'] (?R)參考當前正則運算式,相當于匹配函式里的引數 因此傳遞 ......

    uj5u.com 2020-09-10 03:56:07 more
  • 等保2.0實施流程

    流程 結論 ......

    uj5u.com 2020-09-10 03:56:16 more
最新发布
  • 使用Django Rest framework搭建Blog

    在前面的Blog例子中我們使用的是GraphQL, 雖然GraphQL的使用處于上升趨勢,但是Rest API還是使用的更廣泛一些. 所以還是決定回到傳統的rest api framework上來, Django rest framework的官網上給了一個很好用的QuickStart, 我參考Qu ......

    uj5u.com 2023-04-20 08:17:54 more
  • 記錄-new Date() 我忍你很久了!

    這里給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 大家平時在開發的時候有沒被new Date()折磨過?就是它的諸多怪異的設定讓你每每用的時候,都可能不小心踩坑。造成程式意外出錯,卻一下子找不到問題出處,那叫一個煩透了…… 下面,我就列舉它的“四宗罪”及應用思考 可惡的四宗罪 1. Sa ......

    uj5u.com 2023-04-20 08:17:47 more
  • 使用Vue.js實作文字跑馬燈效果

    實作文字跑馬燈效果,首先用到 substring()截取 和 setInterval計時器 clearInterval()清除計時器 效果如下: 實作代碼如下: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta ......

    uj5u.com 2023-04-20 08:12:31 more
  • JavaScript 運算子

    JavaScript 運算子/運算子 在 JavaScript 中,有一些運算子可以使代碼更簡潔、易讀和高效。以下是一些常見的運算子: 1、可選鏈運算子(optional chaining operator) ?.是可選鏈運算子(optional chaining operator)。?. 可選鏈操 ......

    uj5u.com 2023-04-20 08:02:25 more
  • CSS—相對單位rem

    一、概述 rem是一個相對長度單位,它的單位長度取決于根標簽html的字體尺寸。rem即root em的意思,中文翻譯為根em。瀏覽器的文本尺寸一般默認為16px,即默認情況下: 1rem = 16px rem布局原理:根據CSS媒體查詢功能,更改根標簽的字體尺寸,實作rem單位隨螢屏尺寸的變化,如 ......

    uj5u.com 2023-04-20 08:02:21 more
  • 我的第一個NPM包:panghu-planebattle-esm(胖虎飛機大戰)使用說明

    好家伙,我的包終于開發完啦 歡迎使用胖虎的飛機大戰包!! 為你的主頁添加色彩 這是一個有趣的網頁小游戲包,使用canvas和js開發 使用ES6模塊化開發 效果圖如下: (覺得圖片太sb的可以自己改) 代碼已開源!! Git: https://gitee.com/tang-and-han-dynas ......

    uj5u.com 2023-04-20 08:01:50 more
  • 如何在 vue3 中使用 jsx/tsx?

    我們都知道,通常情況下我們使用 vue 大多都是用的 SFC(Signle File Component)單檔案組件模式,即一個組件就是一個檔案,但其實 Vue 也是支持使用 JSX 來撰寫組件的。這里不討論 SFC 和 JSX 的好壞,這個仁者見仁智者見智。本篇文章旨在帶領大家快速了解和使用 Vu ......

    uj5u.com 2023-04-20 08:01:37 more
  • 【Vue2.x原始碼系列06】計算屬性computed原理

    本章目標:計算屬性是如何實作的?計算屬性快取原理以及洋蔥模型的應用?在初始化Vue實體時,我們會給每個計算屬性都創建一個對應watcher,我們稱之為計算屬性watcher ......

    uj5u.com 2023-04-20 08:01:31 more
  • http1.1與http2.0

    一、http是什么 通俗來講,http就是計算機通過網路進行通信的規則,是一個基于請求與回應,無狀態的,應用層協議。常用于TCP/IP協議傳輸資料。目前任何終端之間任何一種通信方式都必須按Http協議進行,否則無法連接。tcp(三次握手,四次揮手)。 請求與回應:客戶端請求、服務端回應資料。 無狀態 ......

    uj5u.com 2023-04-20 08:01:10 more
  • http1.1與http2.0

    一、http是什么 通俗來講,http就是計算機通過網路進行通信的規則,是一個基于請求與回應,無狀態的,應用層協議。常用于TCP/IP協議傳輸資料。目前任何終端之間任何一種通信方式都必須按Http協議進行,否則無法連接。tcp(三次握手,四次揮手)。 請求與回應:客戶端請求、服務端回應資料。 無狀態 ......

    uj5u.com 2023-04-20 08:00:32 more