記錄-js基礎練習題

来源:https://www.cnblogs.com/smileZAZ/archive/2023/04/17/17326637.html
-Advertisement-
Play Games

這裡給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 隔行換色(%): window.onload = function() { var aLi = document.getElementsByTagName('li'); for(var i = 0; i < aLi.length; i++ ...


這裡給大家分享我在網上總結出來的一些知識,希望對大家有所幫助

隔行換色(%):

window.onload = function() {
    var aLi = document.getElementsByTagName('li');
    for(var i = 0; i < aLi.length; i++){
        if(i%2 == 1){
			aLi[i].style.background = '#bfa';
        }
    }
}
<ul>
    <li>aaa</li>
	<li>bbb</li>
	<li>ccc</li>
	<li>ddd</li>
</ul>

簡易計算器:

<script>
	window.onload = function(){
		var oNum1 = document.getElementById('num1');
        var oNum2 = document.getElementById('num2');
        var oBtn = document.getElementById('btn');
        var oSel = document.getElementById('sel');
        oBtn.onclick = function(){
            var iNum1 = parseInt(oNum1.value);
            var iNum2 = parseInt(oNum2.value);
            switch(oSel.value){
				case '+':
                	alert(iNum1+iNum2);
                break;
                case '-':
               		alert(iNum1-iNum2);
                break;
                case '*':
                	alert(iNum1*iNum2);
                break;
                case '/':
                	alert(iNum1/iNum2);
                break;
                default:
                	alert('你沒有合適的運算符!');
                break;
            }
        }
	}
</script>
<input type="text" id = "num1">
<select name="" id="sel">
	<option value="+">+</option>
	<option value="-">-</option>
	<option value="*">*</option>
	<option value="/">/</option>
</select>
<input type="text" id="num2">
<input type="button" value="計算" id="btn">

雙色球隨機數生成:

目標:生成一組(7個) 1-33之間的隨機不重覆的整數(1.生成一個1-33之間的整數。 2.生成7個–>迴圈長度不固定用while迴圈。 3.要求不重覆,補零操作)

<script>
    function rnd(m, n) {
    return m + parseInt(Math.random()*(n-m));
	}
	//數組去重
	function findInArr(num,arr) {
		for(var i = 0; i < arr.length; i++) {
            if(arr[i] == num){
                return true;
            }
        }
        return false;
    }
	function toDo(n){
        return n < 10 ? '0' + n : '' + n;
    }
	var arr = [];
	while(arr.length < 7) {
        //1-34包括1,不包括34
        var rNum = rnd(1,34);
        if(findInArr(rNum,arr) == false) {
            arr.push(toDo(rNum));
        }
    }
	document.write(arr);
</script>

滑鼠滑過div顯示隱藏:

<div id="box1"
   οnmοuseοver="document.getElementById('box1').style.width='200px';document.getElementById('box1').style.height='200px'"
     οnmοuseοut="document.getElementById('box1').style.width='100px';document.getElementById('box1').style.height='100px'">
</div>

條件判斷if:

點擊按鈕,如果div顯示,那麼隱藏它,如果div隱藏,那麼顯示它。

<input type="button" value="顯示隱藏" οnclick="showHide()">
<div id="box1"></div>
<script>
        function showHide() {
            var oDiv = document.getElementById('box1');
            if (oDiv.style.display == "block") {
                oDiv.style.display = "none";
            } else {
                oDiv.style.display = "block";
            }
        }
</script>

背景色換膚功能:

一個頁面兩個按鈕,一個div點擊不同的按鈕,背景色分別變成不同的顏色,字體大小也要改變。

<style>
        #box1 {
            width: 200px;
            height: 200px;
            background-color: #bfa;
        }
        .day{
            background: green;
            font-size: 10px;
        }
        .night{
            background: gray;
            font-size: 22px;
        }
</style>
<input type="button" value="白天" οnclick="showDay()">
<input type="button" value="夜晚" οnclick="showNight()">
<div id="box1">實現白天夜晚換膚功能</div>
<script>
        function showDay(){
            document.body.className="day";   
        }
        function showNight(){
            document.body.className="night";
        }
</script>

行為和結構的分離:

<script>
	window.onload = function(){
		//1.獲取元素
		var oBtn = document.getElementById('btn');
		//2.加事件
		oBtn.onclick = function(){
			alert();
		};
	};
</script>

全選功能的實現:

<script>
window.onload = function () {
	var oA = document.getElementById('all');
	var oBox = document.getElementById('box');
	//獲取一組元素
	var oInp = oBox.getElementsByTagName('input');
	oA.onclick = function () {
		for (var i = 0; i < oInp.length; i++) {
			oInp[i].checked = true;
		}
	};
};
</script>
<input type="button" value="全選" id="all">
<hr>
<div id="box">
	<input type="checkbox" name="">
	<input type="checkbox" name="">
	<input type="checkbox" name="">
	<input type="checkbox" name="">
</div>

操作元素類容和屬性的兩種方式:

①方式:

window.onload = function(){
	var oBtn = document.getElementById('btn');
	oBtn.style.background = 'red';
	//方式二能實現1實現不了的功能oBtn['style']['background'] = 'green';
    //var aaa = 'background';
    //oBtn.style[aaa] = 'green';能夠使用變數
}

②內容:

  1. 表單元素:oBtn.value
  2. 非表單元素:

    前端學習

    oP.innerHTML

反選功能實現:

window.onload = function() {
	var oR = document.getElementById('reverse');
	var oC = document.getElementById('C1');
	oR.onclick = function(){
		if(oC.checked == true){
            oC.checked = false;
		}else{
            oC.checked = true
        }
	}
} 
<input type = "button"  value="單個覆選框反選" id="reverse">
<input type="checkbox" name="" id="C1">
    //這樣寫太麻煩了,不夠簡潔。改變如下:
<script>
	window.onload = function() {
		var oR = document.getElementById('reverse');
		var oC = document.getElementById('C1');
		oR.onclick = function() {
			oC.checked = !oC.checked;
		}
	}
</script>
<input type="button" value="單個覆選框反選" id="reverse">
<input type="checkbox" name="" id="C1">

聯動選擇:

需求:點擊上面的全選,那麼下麵都選中,如果下麵全選中,那麼上面也選中,如果下麵有一個沒選中,那麼上面不選中。

<script>
    window.onload = function() {
		var oA = document.getElementById('all');
    	var oBox = document.getElementById('box');
    	var oInp = oBox.getElementsByTagName('input');
    	oA.onclick = function(){
            for(var i = 0; i < oInp.length; i++){
                oInp[i].checked = oA.checked;
            }
        };
    
    	for(var i = 0; i < oInp.length; i++){
			oInp[i].onclick = function() {
				var count = 0;
                for(var i = 0; i < oInp.length; i++){
                    if(oInp[i].checked){
                        count++;
                    }
                }
                if(count == oInp.length){
                    oA.checked = true;
                }else{
                    oA.checked = false;
                }
            }
        }
}
</script>
<input type="checkbox" name id="all">全選
<hr>
<div id="box">
    <input type="checkbox">
    <input type="checkbox">
    <input type="checkbox">
</div>
//為什麼必須加一個box

選項卡實現(排他思想):

for迴圈是一瞬間完成的

<style>
	#box .on{
		background:#bfa;
	}
	#box div{
		width:300px;
		height:200px;
		border:1px solid red;
		display: none;
	}
</style>
<script>
	window.onload = function(){
		var oBox = document.getElementById('box');
		var oBtn = oBox.getElementsByTagName('input');
		var oDiv = oBox.getElementsByTagName('div');
		for(var i = 0; i < oBtn.length; i++){
            oBtn[i].index = i;
            oBtn[i].onclick = function(){
                for(var i = 0; i < oBtn.length; i++){
					oBtn[i].className = '';
                    oDiv[i].style.display = 'none';
                }
                this.className = 'on';
                oDiv[this.index].style.display = 'block';
            }
        }
	}
</script>
<div id = "box">
	<input type="button" value="體育" class="on">
	<input type="button" value="娛樂">
	<input type="button" value="新聞">
	<div style="display='block'">***獲得100米第一</div>
	<div>段奕巨集真帥!</div>
	<div>美國懂王昨日於白宮遭**</div>
</div>

簡易定時器:

<script>
    window.onload = function() {
		var oTime = document.getElementById('time');
    	var oStart = document.getElementById('start');
    	var oStop = document.getElementById('stop');
    	var timer = null;
    	function toDo(n){
            return n < 10 ? '0' + n : n;
        }
    	oStart.onclick = function() {
            var s = 0;
            clearInterval(timer);
			timer = setInterval(function(){
                s++;
                oTime.value = toDo(parseInt(s / 60)) + ':' + toDo( s % 60);
            },50);	
        };
    	oStop.onclick = function() {
			clearInterval(timer);
        }
	};
</script>
<input type = "text" value="00:00" id = "time">
<input type = "button" value="開始" id="start">
<input type = "button" value = "停止" id = "stop">

文字時鐘:

<script>
    window.onload = function() {
		var oP = document.getElementById('p1');
    	var timer = null;
    	function toDo(n) {
			return n < 10 ? '0' + n : n;
        }
    	function time() {
            var arr = ['日', '一', '二', '三', '四', '五','六'];
            var oDate = new Date();
            var year = oDate.getFullYear();
            var month = oDate.getMonth() + 1;
            var date = oDate.getDate();
            var w = oDate.getDay();
            var h = oDate.getHours();
            var m = oDate.getMinutes();
            var s = oDate.getSeconds();
            oP.innerHTML = year + '年' + month + '月' + date + '日' +toDo(h) +':' + toDo(m) + ':' + toDo(s) + '星期' + arr[w]; 
        }
    	time();//不需要等一秒鐘再執行函數
    	clearInterval(timer);//定時器先關閉再執行
    	timer = setInterval(time,1000);    	
	}
</script>
<p id="p1">2020年8月20日15:56:30星期四</p>

延遲廣告:

圖片2s後顯示,2s後消失,當滑鼠移入圖片時,不消失,移出後2s消失。

定時器裡面可以套定時器

<script>
	window.onload = function() {
		var oImg = document.getElementById('pic');
        var timer = null;
        var timer2 = null;
        clearTimeout(timer);
        timer = setTimeout(function(){
        	oImg.style.display = 'block';
        	clearTimeout(timer2);
        	timer2 = setTimeout(function(){
        		oImg.style.display = 'none';
        	},2000);
        },2000);    
        oImg.onmouseover= function(){
        	clearTimeout(timer2);
        };
        oImg.onmouseout = function(){
        	timer2 = setTimeout(function(){
        		oImg.style.display = 'none';
        	},2000);
        };
	};
</script>
<img src="../image/1.jpg" id="pic">

自定義屬性:

<script>
	window.onload = function(){
		var oBtn = document.getElementById('btn');
		oBtn.abc = 0; //自定義屬性
		oBtn.onclick = function(){
			alert(this.abc);
		}
	};
</script>
<input type="button" value="aaa" id="btn">

輪播圖(重點):

<style>
	#box .on{
		background: #bfa;
	}
	#box div{
		width: 300px;
		height: 200px;
		border: 1px solid red;
        display: none;
	}
</style>
<script>
	window.onload = function() {
		var oBox = document.getElementById('box');
		var oPrev = document.getElementById('prev');
		var oNext = document.getElementById('next');
		var oBtn = oBox.getElementsByTagName('input');
		var oDiv = oBox.getElementsByTagName('div');
		var iNow = 0;
		for(var i = 0; i < oBtn.length; i++){
			oBtn[i].index = i;
			oBtn[i].onclick = function(){
				iNow = this.index;
				for(var i = 0; i < oBtn.length; i++){
					oBtn[i].className='';
					oDiv[i].style.display='none';
				}
				this.className='on'; //this=oBtn[iNow]
				oDiv[this.index].style.display='block';
			};
		}
		//下一個播放
		oNext.onclick = function(){
			for(var i = 0; i < oBtn.length; i++){
				oBtn[i].className='';
				oDiv[i].style.display='none';
			}
			iNow++;
			if(iNow == oBtn.length){iNow = 0;}
			oBtn[iNow].className='on';
			oDiv[iNow].style.display='block';
		};
		//上一個播放
		oPrev.onclick = function(){
			for(var i = 0; i < oBtn.length; i++){
				oBtn[i].className='';
				oDiv[i].style.display='none';
			}
			iNow--;
			if(iNow == -1){iNow = oBtn.length - 1;}
			oBtn[iNow].className='on';
			oDiv[iNow].style.display='block';
		};		
	};
</script>
<div id="box">
	<a href="javascript:;" id="prev"><-</a>
    <input type="button" value="aaa" class="on">
    <input type="button" value="bbb">
    <input type="button" value="ccc">
    <a href="javascript:;" id="next">-></a>
    <div style="display:block">aaa</div>
    <div>bbb</div>
    <div>ccc</div>
</div>

簡化代碼(封裝)+ 實現自動播放功能 如下:

<script>
	window.onload = function() {
		var oBox = document.getElementById('box');
		var oPrev = document.getElementById('prev');
		var oNext = document.getElementById('next');
		var oBtn = oBox.getElementsByTagName('input');
		var oDiv = oBox.getElementsByTagName('div');
		var iNow = 0;
    	var timer = null;
    	function tab(){
            for(var i = 0; i < oBtn.length; i++){
				oBtn[i].className='';
				oDiv[i].style.display='none';
			}			
			oBtn[iNow].className='on';
			oDiv[iNow].style.display='block';
        }
		for(var i = 0; i < oBtn.length; i++){
			oBtn[i].index = i;
			oBtn[i].onclick = function(){
				iNow = this.index;
				tab();
			};
		}
		//下一個播放
    	function fnNext(){
            iNow++;
			if(iNow == oBtn.length){iNow = 0;}
            tab();
        }
		oNext.onclick = fnNext;
		//上一個播放
		oPrev.onclick = function(){			
            iNow--;
			if(iNow == -1){iNow = oBtn.length - 1;}
            tab();
		};
    	//自動播放
    	clearInterval(timer);
    	timer = setInterval(function(){
            fnNext();
        },1000);
    	oBox.onmouseover = function(){
			clearInterval(timer);
        };
    	oBox.onmouseout = function(){
            clearInterval(timer);
          	timer = setInterval(function(){
                fnNext();
            },1000);  
        };
	};
</script>

理解立即執行函數:

var a = 12;
alert((a)); //2層括弧不影響結果
var show = function(){};
show(); //(show)()
;(function(){})();  //防止別人的代碼影響自己的

(function(){
	var a = b = 10;
})();
console.log(a); //undefined
console.log(b); //10

簡易發佈留言:

<script>
	window.onload = function(){
		var oTxt=document.getElementById('txt');
        var oBtn=document.getElementById('btn');
        var oUl=document.getElementById('ul1');
        oBtn.onclick = function(){
			var oLi = document.createElement('li');
            oLi.innerHTML=oTxt.value;
            //oUl.insertBefore(oLi,oUl.children[0]);
            //如果父級下麵沒有元素,那麼向後插入,有,則向前插入。相容IE
            if(oUl.children.length == 0){
            	oUl.appendChild(oLi);
            }else{
            	oUl.insertBefore(oLi,oUl.children[0]);
            }
            oTxt.value = '';
		};
	};
</script>
<input type="text" id="txt">
<input type="button" value="發佈" id="btn">
<ul id="ul1"></ul>

上移下移功能實現:

<script>
	window.onload = function(){
		var oUl = document.getElementById('ul1');
		var aPrev = oUl.getElementsByClassName('prev');
		//上移
		for(var i = 0; i < aPrev.length; i++){
			aPrev[i].onclick = function(){
				var obj = this.parentNode;
				if(obj == oUl.children[0]){
					alert('到頭了');
					return;
				}
				
				var oPrev = obj.previousElementSibling || obj.previousSibling;
				oUl.insertBefore(obj,oPrev);
			};
		}
		//下移
		var aNext = oUl.getElementsByClassName('next');
		for(var i = 0; i < aNext.length; i++){
			aNext[i].onclick = function(){
				var obj = this.parentNode;
				if(obj == oUl.children[oUl.children.length-1]){
					alert('到底了');
					return;
				}
				
				var oNext = obj.nextElementSibling || obj.nextSibling;
				var oNext2 = oNext.nextElementSibling || oNext.nextSibling;
				oUl.insertBefore(obj,oNext2);
			};
		}
	};
</script>
<ul id="ul1">
	<li><span>0.床前明月光</span>
		<a href="javascript:;" class="prev">上移</a>
		<a href="javascript:;" class="next">下移</a></li>
	<li><span>1.疑是地上霜</span>
		<a href="javascript:;" class="prev">上移</a>
		<a href="javascript:;" class="next">下移</a></li>
	<li><span>2.舉頭望明月</span>
		<a href="javascript:;" class="prev">上移</a>
		<a href="javascript:;" class="next">下移</a></li>
	<li><span>3.低頭思故鄉</span>
		<a href="javascript:;" class="prev">上移</a>
		<a href="javascript:;" class="next">下移</a></li>	
</ul>

右下角懸浮框功能實現:
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-SwhN8Ctu-1598018747062)(C:\Users\Hrj201305042\AppData\Roaming\Typora\typora-user-images\image-20200821143137668.png)]

//物體實際占的距離
window.onload = function(){
	var oDiv = document.getElementById('div1');
	alert(oDiv.offsetHeight);
};
//關於滾動的距離
body{height:3000px;}
#btn{position:fixed; left:10px; top:200px;}
window.onscroll = function(){
	var oBtn = document.getElementById('btn');
	oBtn.onclick = function(){
		var sT = document.documentElement.scrollTop || document.body.scrollTop;
		alert(sT);
	};
};
//可視區的高度
window.onload = function(){
	var oBtn = document.getElementById('btn');
	oBtn.onclick = function(){
		alert(document.documentElement.clientHeight);	
	};
};
<script>  //視窗縮小onresize
	window.onresize = window.onload=window.onscroll=
    function(){
		if(window.navigator.userAgent.indexOf('MSIE 6.0')!=-1){
			var oDiv = document.getElementById('div1');
			var sT = document.documentElement.scrollTop	|| document.body.scrollTop;
        	var cH = document.documentElement.clientHeight;
        	var oH = oDiv.offsetHeight;
        	oDiv.style.top = sT + cH + oH +'px';
        }	
	};
</script>
<div id="div1"></div>

json和數組的區別:

json中每個元素是以字元串作為下標,數組則是以數字作為下標。json使用for in迴圈,數組一般使用for迴圈。

var json = {"name":"leo", "age":18};  var arr=["leo",18];

json是種數據格式,和JavaScript沒有直接聯繫,js原生提供了部分json操作方法,是js數據交互最通用的數據格式之一

json和字元串互轉:

①字元串轉json:name=leo&age=18 => {“name”: “leo”, “age” : 18}

<script>	
	function url2json(str){
		var arr = str.split('&');
		var json = {};
		for(var i = 0; i < arr.length; i++){
			//[user = leo age = 18 class = javas]
			//arr[i].split('=')[0]  user
			//arr[i].split('=')[1]  leo
			//json['user'] = leo
			json[arr[i].split('=')[0]] = arr[i].split('=')[1];
		}
		return json
	}
	var str = 'user=leo&age=18&class=javas';
	console.log(url2json(str));
</script>

②json轉字元串{“name”: “leo” , “age” : 18} => name=leo&age=18

function json2url(json){
	var arr = [];
	for(var name in json){
		//name user
		//json[name] leo
		arr.push(name + '=' + json[name]);
		['name=leo', 'age=18']
	}
	return arr.join('&');
}
var json = {user:"leo", age:18, class:"javas"};
alert(json2url(json));

文字輸入框提示實現:

#box{position:relative;}
#box span{color:#ccc;position:absolute;left:6px;top:2px;}
<script>
	window.onload = function(){
		var oS = document.getElementById('s1');
		var oTxt = document.getElementById('txt');
		oTxt.onfocus = function(){
			oS.style.display = 'none';
		};
        oTxt.onblur = function(){
			if(oTxt.value == ''){
				oS.style.display = 'block';
			}
		};
		oS.onclick = function(){
			//oS.style.display = 'none';
			oTxt.focus();
		};
	};
</script>
<div id="box">
	<span id="s1">請輸入內容</span>
	<input type="text" id="txt">
</div>

事件對象:

<script>
	window.onload = function(){
		var oBtn = document.getElementById('btn');
		oBtn.onclick = function(ev){
			var oEvent = ev||event;
			console.log(oEvent);
		};
	};
</script>
<input type="button" value="點擊" id="btn">

事件冒泡:

document.onclick = function(){alert('document');};
<div id="div1" onclick="alert('div1')">
	<input type="button" value="按鈕" onclick="alert('input')">
</div> //點擊按鈕,從里往外傳,input->div1->document.
       //(父級沒有事件也往上傳)如果input的上級div不添加事件 input-> document
       
//取消冒泡:1標準:oEvent.stopPropagation&&oEvent.stopPropagation();
		2.IE: oEvent.cancelBubble&&(oEvent.cancelBubble=true);

//綁定事件:FF chrome
 oBtn.addEventListener('click',aaa,false);
//IE6-8 沒有捕獲階段,只有冒泡
oBtn.attachEvent('onclick', aaa;

獲取滑鼠點擊位置:

document.onclick = function(){
    //chrome , IE
	alert('left:' + event.clientX+',top:'+event.clientY);
};

div跟隨滑鼠移動:

滑鼠移動,div跟隨滑鼠移動

實現:1.獲取滑鼠位置 2.賦值給div的left和top樣式

#div1{width:200px;height:200px;background:#bfa;position:absolute;}
<script>	
	window.onload = function(){
		var oDiv = document.getElementById('div1');
		document.onmousemove = function(ev){
			var oEvent = ev || event;
			console.log('ev.clientX:' + oEvent.clientX + 'ev.clientY:' + oEvent.clientY);
			oDiv.style.left = oEvent.clientX + 'px';
			oDiv.style.top = oEvent.cilentY + 'px';
		};
	};
</script>
<div id="div1"></div>

本文轉載於:

https://blog.csdn.net/qq_48687155/article/details/108159063

如果對您有所幫助,歡迎您點個關註,我會定時更新技術文檔,大家一起討論學習,一起進步。

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一、部署LNMP及redis 1、部署LNMP,需要將 tengine-2.2.0.tar.gz 拷貝到虛擬機的 /root 目錄下 步驟一:安裝nginx 源碼安裝相關軟體包 # pcre-devel做正則匹配,zlib-devel做數據壓縮 [root@template ~]# yum -y i ...
  • 如今,數字經濟正逐步走向深化應用、規範發展、普惠共用的新階段,數字經濟與實體經濟深度融合、基礎軟體國產化替代成為數字時代主潮流。數字工具如何讓千行百業共同實現韌性生長? 「 2023 袋鼠雲春季生長大會」乘風而起,帶來數實融合趨勢下的產品煥新升級剖析、前瞻行業視覺解讀、最佳數字實踐分享,助力各大產業 ...
  • 摘要:今天發現Mysql的主從資料庫沒有同步,瞬間整個人頭皮發麻。 本文分享自華為雲社區《糟了,生產環境數據竟然不一致,人麻了!》,作者:冰 河 。 今天發現Mysql的主從資料庫沒有同步 先上Master庫: mysql>show processlist; 查看下進程是否Sleep太多。發現很正常 ...
  • GreatSQL社區原創內容未經授權不得隨意使用,轉載請聯繫小編並註明來源。 GreatSQL是MySQL的國產分支版本,使用上與MySQL一致。 作者: 奧特曼愛小怪獸 文章來源:GreatSQL社區投稿 上一篇 MySQL8.0 優化器介紹(一)介紹了成本優化模型的三要素:表關聯順序,與每張表返 ...
  • 一、資料庫類型 關係資料庫管理系統(RDBMS) 非關係資料庫管理系統(NoSQL) 按照預先設置的組織機構,將數據存儲在物理介質上(即:硬碟上) 數據之間可以做無關聯操作 (例如: 多表查詢,嵌套查詢,外鍵等) 主流的RDBMS軟體:MySQL、MariaDB、Oracle、DB2、SQL Ser ...
  • TiDB作為NewSQL,其在對MySQL(SQL92協議)的相容上做了很多,MySQL作為當下使用較廣的事務型資料庫,在IT界尤其是互聯網間使用廣泛,那麼對於開發人員來說,1)兩個資料庫產品在SQL開發及調優的過程中,都有哪些差異?在系統遷移前需要提前做哪些準備? 2)TiDB的執行計劃如何查看,... ...
  • GreatSQL社區原創內容未經授權不得隨意使用,轉載請聯繫小編並註明來源。 GreatSQL是MySQL的國產分支版本,使用上與MySQL一致。 作者: Yejinrong/葉金榮 文章來源:GreatSQL社區投稿 啟用coredump 製造一個coredump場景 真實故障場景分析跟蹤 上一篇 ...
  • 背景 如今很多網站都引入截圖功能,可用於問題反饋、內容分享等實用需求,而前端截圖也不知不覺成為了首選。今天為大家推薦兩種前端截圖方式,雖然有些局限,但是也能應付大部分項目需求。 Canvas截圖:html2canvas SVG截圖:rasterizehtml 原理 首先來談下兩種前端截圖方式的原理, ...
一周排行
    -Advertisement-
    Play Games
  • 前言 本文介紹一款使用 C# 與 WPF 開發的音頻播放器,其界面簡潔大方,操作體驗流暢。該播放器支持多種音頻格式(如 MP4、WMA、OGG、FLAC 等),並具備標記、實時歌詞顯示等功能。 另外,還支持換膚及多語言(中英文)切換。核心音頻處理採用 FFmpeg 組件,獲得了廣泛認可,目前 Git ...
  • OAuth2.0授權驗證-gitee授權碼模式 本文主要介紹如何筆者自己是如何使用gitee提供的OAuth2.0協議完成授權驗證並登錄到自己的系統,完整模式如圖 1、創建應用 打開gitee個人中心->第三方應用->創建應用 創建應用後在我的應用界面,查看已創建應用的Client ID和Clien ...
  • 解決了這個問題:《winForm下,fastReport.net 從.net framework 升級到.net5遇到的錯誤“Operation is not supported on this platform.”》 本文內容轉載自:https://www.fcnsoft.com/Home/Sho ...
  • 國內文章 WPF 從裸 Win 32 的 WM_Pointer 消息獲取觸摸點繪製筆跡 https://www.cnblogs.com/lindexi/p/18390983 本文將告訴大家如何在 WPF 裡面,接收裸 Win 32 的 WM_Pointer 消息,從消息裡面獲取觸摸點信息,使用觸摸點 ...
  • 前言 給大家推薦一個專為新零售快消行業打造了一套高效的進銷存管理系統。 系統不僅具備強大的庫存管理功能,還集成了高性能的輕量級 POS 解決方案,確保頁面載入速度極快,提供良好的用戶體驗。 項目介紹 Dorisoy.POS 是一款基於 .NET 7 和 Angular 4 開發的新零售快消進銷存管理 ...
  • ABP CLI常用的代碼分享 一、確保環境配置正確 安裝.NET CLI: ABP CLI是基於.NET Core或.NET 5/6/7等更高版本構建的,因此首先需要在你的開發環境中安裝.NET CLI。這可以通過訪問Microsoft官網下載並安裝相應版本的.NET SDK來實現。 安裝ABP ...
  • 問題 問題是這樣的:第三方的webapi,需要先調用登陸介面獲取Cookie,訪問其它介面時攜帶Cookie信息。 但使用HttpClient類調用登陸介面,返回的Headers中沒有找到Cookie信息。 分析 首先,使用Postman測試該登陸介面,正常返回Cookie信息,說明是HttpCli ...
  • 國內文章 關於.NET在中國為什麼工資低的分析 https://www.cnblogs.com/thinkingmore/p/18406244 .NET在中國開發者的薪資偏低,主要因市場需求、技術棧選擇和企業文化等因素所致。歷史上,.NET曾因微軟的閉源策略發展受限,儘管後來推出了跨平臺的.NET ...
  • 在WPF開發應用中,動畫不僅可以引起用戶的註意與興趣,而且還使軟體更加便於使用。前面幾篇文章講解了畫筆(Brush),形狀(Shape),幾何圖形(Geometry),變換(Transform)等相關內容,今天繼續講解動畫相關內容和知識點,僅供學習分享使用,如有不足之處,還請指正。 ...
  • 什麼是委托? 委托可以說是把一個方法代入另一個方法執行,相當於指向函數的指針;事件就相當於保存委托的數組; 1.實例化委托的方式: 方式1:通過new創建實例: public delegate void ShowDelegate(); 或者 public delegate string ShowDe ...