js-封装几个常用函数
// 编写一个函数,功能判断任意一个数是否是素数,如果是素数返回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 ); //获取数组中最小值的下标
}
努力到无能为力,拼搏到感动自己。
欢迎大家在下方多多评论。

浙公网安备 33010602011771号