JavaScript常用代码段

149 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

一些javascript实用代码

1)区分IE和非IE浏览器

 if(!+[1,]){
     alert("这是IE浏览器");
} else{
     alert("这不是IE浏览器"):
 }

2)将日期直接转换为数值:

+new Date();

3)非IE浏览器下奖类数组对象arguments转换为数组:

Array.prototype.slice.call(arguments);

4)void操作符(用来计算一个表达式但是不返回值)

<a href="javcascript:void(0)">calamus</a>

5)跳转至新页面,并且保证浏览器不会再回退

location.replace("http://www.calamus.cn");

6)几秒钟后返回上一页

<meta http-equiv="refresh" content="5;url=jvascript:window.history.go(-1);">

7)在打开的子窗口中刷新父窗口

window.opener.location.reload();

8)打印页面

window.print();

9)alert()文本换行

alert("calamus\np");

10)按键检测

event.shiftKey;    //检测shift
event.altKey;      //检测Alt
event.ctrlKey;     //检测Ctrl

检测Ctrl+Enter按键

if(event.ctrlKey&&event.keyCode==13){
    console.log("calamus");
}

11)脚本永不出错的方法

window.onerror=function(m,f,l){
    return true;
}

12)字符串和ASCII码之间的转换

console.g("a".charCodeAt(0));
console.log(String.fromCharCode(75));

13)判断IE版本

window.navigation.appVersion;

14)获取屏幕分辨率的宽、高

window.screen.height;
window.screen.width;

15)获取浏览器插件的数目

navigatior.plugins.length;

16)js原生判断是否是移动设备浏览器

 var mobile=/iphone|ipod|android.*mobile|windows.*phone|blackberry.*mobile/i;
if(mobile.test(window.navigator.userAgent.toLowerCase())){
//是移动设备
}
else{
//不是移动设备
}

17)城市三级联动

/*城市三级联动

* @method cityChange

* @param allProvince,allCity,allDistrict

*/


function cityChange(provinceN,cityN,districtN){
    var all_province="";
    for(var i=0;i<allCity.province.length;i++){
            all_province+='<option name="province" value='+allCity.province[i].id+'><span class="province">'+allCity.province[i].name+'</span></option>';  };

    $('#'+provinceN).append(all_province);

    
    $('#'+provinceN).change(function () {
                var provinceId = $('#'+provinceN).val();
                $('#'+cityN).find("option:gt(0)").remove();
                 $('#'+districtN).find("option:gt(0)").remove();
               var all_city="";  
               if( provinceId!=99999){             
               for(var j=0;j<allCity.city[provinceId].length;j++){
                         all_city += '<option name="city" value='+allCity.city[provinceId][j].id+'><span class="city">'+allCity.city[provinceId][j].name+'</span></option>';                                         
                    } } ;
                    $('#'+cityN).append(all_city);                                  
            });

    $('#'+cityN).change(function () {
                var cityId = $(this).val();
                var all_district="";                
               for(var k=0;k<allCity.district[cityId].length;k++){
                         all_district += '<option name="district" value='+allCity.district[cityId][k].id+'><span class="city">'+allCity.district[cityId][k].name+'</span></option>';                                         
                    }  ;
                    $('#'+districtN).append(all_district);                                  
            });            
}
  1. 一些简单数据处理
/**
 * 字符串反转输出
 * @param {*} str 
 */
function reverseString(str) {
  str = str
    .split("")
    .reverse()
    .join("");
  return str;
}

/**
 * 回文算法
 * @param {*} str 
 */
function palindrome(str) {
  str = str.replace(/[^a-zA-Z\d]/g, "");
  return str.toLowerCase() == str
      .split("")
      .reverse()
      .join("")
      .toLowerCase();
}

/**
 * 返回提供的句子中最长的单词的长度
 * @param {*} str 
 */
function findLongestWord(str) {
  str = str.split(" ");
  let len = str[0].length;
  for (let i = 0; i < str.length; i++) {
    if (len <= str[i].length) {
      len = str[i].length;
    }
  }
  return len;
}

/**
 * 返回一个字符串,确保字符串的每个单词首字母都大写,其余部分小写
 * @param {*} str 
 */
function titleCase(str) {
  str = str.split(" ");
  for (let i = 0; i < str.length; i++) {
    str[i] =
      str[i].substring(0, 1).toUpperCase() + str[i].substring(1).toLowerCase();
  }
  str = str.join(" ");
  return str;
}

/**
 * 在右边的大数组中包含了4个小数组,请分别找到每个小数组中的最大值,然后把它们串联起来,形成一个新的数组。
 * @param {*} arr 
 */
function largestOfFour(arr) {
  let newArr = [];
  for (let i = 0; i < arr.length; i++) {
    let max = arr[i][0];
    for (let j = 0; j < arr[i].length; j++) {
      if (max <= arr[i][j]) {
        max = arr[i][j];
      }
    }
    newArr.push(max);
  }
  return newArr;
}

/**
 * 把一个数组arr按照指定的数组大小size分割成若干个数组块
 * @param {*} arr 
 * @param {*} size 
 */
function chunk(arr, size) {
  var index = 0;
  var newArray = [];

  while (index < arr.length) {
    newArray.push(arr.slice(index, (index += size)));
  }

  return newArray;
}

/**
 * 删除数组中的所有假值
 * @param {*} arr 
 */
function bouncer(arr) {
  return arr.filter(params => Boolean(params));
}

/**
 * 去除数组中任意多个值
 * @param {*} arr 
 */
function destroyer(arr) {
  var args = [];
  for (var i = 1; i < arguments.length; i++) {
    //将待摧毁的值放入一个数组中,赋值给变量args
    args.push(arguments[i]);
  }
  var newArr = arr.filter(function(item) {
    //两个数组去重;
    return args.indexOf(item) === -1;
  });
  return newArr;
}