// 編寫一個函數,功能判斷任意一個數是否是素數,如果是素數返回true 否則返回false function isPrimerNumber( m ){ //判斷m是否是素數 //如果是素數 在2--(m-1)區間內 沒有能夠被m整除的數 for( var i = 2 ; i < m ; i++ ){ if( !(m%i) ){ //不是素數 能夠被整除 return false;//不是素數 } } //循環結束后 上面沒有滿足條件的i 說明m是素數 return true; } /* 隨機數 參數: n:起始數字 m:范圍 */ function numRandom(n,m){ if( n>m ){ return parseInt(m+Math.random()*(n-m+1)); //return Math.round( Math.random()*(n-m)+m ) }else{ return parseInt(n+Math.random()*(m-n+1)); //return Math.round( Math.random()*(m-n)+n ) } } /* 判斷一個字符串的內容是不是純數字 */ function fn(str){ if(str %1 == 0){ console.log("純數字"); }else{ console.log("不是純數字"); } } function typeNum(n){ if(typeof Number(n) == "number" && !Number.isNaN(n)){ alert("純數字") }else{ alert("非純數字") } } /* 根據id獲取元素 */ function $id(id){ return document.getElementById(id); } /* 創建一個元素 */ function createEle(ele){ return document.createElement(ele); } /* 獲取六位十六進制隨機顏色值 */ function getColor(){ var str = "0123456789abcdef"; var color = "#";//存儲顏色值 for( var i = 1 ; i <= 6 ; i++ ){ color += str.charAt( numRandom(0,15) ); } return color; } //方法二 function getColor2(){ return "rgb("+numRandom(0,255)+","+numRandom(0,255)+","+numRandom(0,255)+")"; } //document.body.style.backgroundColor = getColor(); /* 封裝一個函數 功能是 將日期轉成字符串 顯示自定義的時間格式 */ function dateToString(d){ var y = d.getFullYear(); var m =toTwo( d.getMonth() + 1 ); var d1 =toTwo( d.getDate() ); var h = toTwo( d.getHours() ); var mi =toTwo( d.getMinutes() ); var s = toTwo( d.getSeconds() ); return y+"-"+m+"-"+d1+" "+h+":"+mi+":"+s; } //如果str小於10 前面拼接一個0 function toTwo(str){ return str < 10 ? "0" + str : str; } /* 2、隨機獲取六位驗證碼 驗證碼由大寫字母 或小寫字母 或 數字組成 */ function yanNum(){ str = []; for( var i = 1;i <= 4; i++ ){ var ma = numRandom(122,48); if( ma >= 48 && ma <= 57 || ma >= 65 && ma <= 90 || ma >= 97 && ma <= 122 ){ var st = String.fromCharCode(ma); str.push(st); }else{ i--; } } return str } // [23,1,45,6,7,89,90] //冒泡排序:相鄰的兩個數進行比較 大數下沉 小數上浮 // 如果前一個數比后一個大 就交換 function fnSort( arr ){ var t = 0; for( var i = 0 ; i < arr.length - 1 ; i++ ){//n個數比較了幾趟 for( var j = 0 ; j < arr.length-1-i ; j++ ){//控制每趟循環比較了幾次 if( arr[j] > arr[j+1] ){ t = arr[j]; arr[j] = arr[j+1]; arr[j+1] = t; } } } return arr; } //alert( fnSort( [12,562,23,67,7,8,9,5] ) ); /* i j 0 5 1 4 2 3 3 2 j<= 5-i */ //選擇排序 : //思路:每一趟比較時 依次取出數組中的某個數和后面的數比較 //如果該數大於 后面的數 就交換 function fnSort( arr ){ var t; //arr[0] for( var i = 0 ; i < arr.length - 1 ; i++ ){ for( var j = i+1 ; j < arr.length ; j++ ){ if( arr[i] > arr[j] ){ t = arr[i]; arr[i] = arr[j]; arr[j] = t; } } } return arr; } //alert( fnSort( [89,12,7,67,2] ) ); /* 封裝一個碰撞函數 */ function pz(obj1,obj2){ var L1 = obj1.offsetLeft; var R1 = obj1.offsetLeft + obj1.offsetWidth; var T1 = obj1.offsetTop; var B1 = obj1.offsetTop + obj1.offsetHeight; var L2 = obj2.offsetLeft; var R2 = obj2.offsetLeft + obj2.offsetWidth; var T2 = obj2.offsetTop; var B2 = obj2.offsetTop + obj2.offsetHeight; if( R1<L2 || L1>R2 || T1>B2 || T2>B1 ){ //碰不上 return false; }else{ return true; } } /* dom高級操作運動 */ //json參數中 存儲多個屬性attr和目標值target function startMove(obj,json,callback){ clearInterval( obj.timer );//為了防止頻繁操作按鈕時 運動加速的問題 obj.timer = setInterval( () => { var flag = true;//假設循環結束后 值為true 表示所有動作都結束了 可以停止定時器了 for( var attr in json ){ //獲取當前運動元素的實際樣式值 (非行內樣式 getComputedStyle) var current = 0; if( attr == "opacity" ){ current = getStyle( obj , attr ) * 100; }else{ current = parseInt( getStyle( obj , attr ) ); } var speed = (json[attr] - current)/10; speed = speed > 0 ? Math.ceil( speed ) : Math.floor( speed ); if( current != json[attr] ){//說明運動沒有結束 flag = false; } //運動沒有結束 需要繼續設置該元素的樣式 if( attr == "opacity" ){ obj.style[attr] = (current + speed)/100; }else if( attr == "zIndex" ){ obj.style[attr] = json[attr];//直接達到目標值就可以 }else{ obj.style[attr] = current + speed + "px"; } } //例 /*d4.onmouseover = function(){ startMove( this , { left : 350 , top : 300 } ,function(){ startMove( d4 , { opacity : 30 } , function (){ startMove( d4 ,{ width : 300 , height:400 } ); }) } ); }*/ //循環結束后 判斷 flag的值是否為 true if( flag ){ clearInterval( obj.timer ); //上一個動作完成了 就進入到下一個動作 可變的動作 if( callback ){ callback();//調用下一個功能 } } } , 30 ) } /* 封裝一個函數 功能是獲取任意一個元素非行內樣式值 */ function getStyle(obj,attr){ //兼容 if( getComputedStyle ){ return window.getComputedStyle(obj)[attr]; }else{ return obj.currentStyle[attr]; } } //函數功能:獲取數組最小值下標 this.getMinHeightIndex = function(){ var min = Math.min.apply( null,this.hArr );//獲取數組的最小值 return this.hArr.indexOf( min ); //獲取數組中最小值的下標 }