前端設(shè)計(jì)師們最常用的JS代碼匯總
逛社區(qū)時(shí)看到的文章,我修改調(diào)整了內(nèi)容,如果大家覺(jué)得也有幫助 可以收藏下~
HTML5 DOM 選擇器
// querySelector() 返回匹配到的第一個(gè)元素 var item = document.querySelector('.item'); console.log(item); // querySelectorAll() 返回匹配到的所有元素,是一個(gè)nodeList集合 var items = document.querySelectorAll('.item'); console.log(items[0]);
阻止默認(rèn)行為
// 原生js document.getElementById('btn').addEventListener('click', function (event) { event = event || window.event; if (event.preventDefault){ // w3c方法 阻止默認(rèn)行為 event.preventDefault(); } else{ // ie 阻止默認(rèn)行為 event.returnValue = false; } }, false); // jQuery $('#btn').on('click', function (event) { event.preventDefault(); });
阻止冒泡
// 原生js document.getElementById('btn').addEventListener('click', function (event) { event = event || window.event; if (event.stopPropagation){ // w3c方法 阻止冒泡 event.stopPropagation(); } else{ // ie 阻止冒泡 event.cancelBubble = true; } }, false); // jQuery $('#btn').on('click', function (event) { event.stopPropagation(); });
鼠標(biāo)滾輪事件
$('#content').on("mousewheel DOMMouseScroll", function (event) { // chrome & ie || // firefox var delta = (event.originalEvent.wheelDelta && (event.originalEvent.wheelDelta > 0 ? 1 : -1)) || (event.originalEvent.detail && (event.originalEvent.detail > 0 ? -1 : 1)); if (delta > 0) { // 向上滾動(dòng) console.log('mousewheel top'); } else if (delta < 0) { // 向下滾動(dòng) console.log('mousewheel bottom'); } });
檢測(cè)瀏覽器是否支持svg
function isSupportSVG() { var SVG_NS = 'http://www.w3.org/2000/svg'; return !!document.createElementNS &&!!document.createElementNS(SVG_NS, 'svg').createSVGRect; } // 測(cè)試 console.log(isSupportSVG());
檢測(cè)瀏覽器是否支持canvas
function isSupportCanvas() { if(document.createElement('canvas').getContext){ return true; }else{ return false; } } // 測(cè)試,打開(kāi)谷歌瀏覽器控制臺(tái)查看結(jié)果 console.log(isSupportCanvas());
檢測(cè)是否是微信瀏覽器
function isWeiXinClient() { var ua = navigator.userAgent.toLowerCase(); if (ua.match(/MicroMessenger/i)=="micromessenger") { return true; } else { return false; } } // 測(cè)試 alert(isWeiXinClient());
jQuery 獲取鼠標(biāo)在圖片上的坐標(biāo)
$('#myImage').click(function(event){ //獲取鼠標(biāo)在圖片上的坐標(biāo) console.log('X:' + event.offsetX+'\n Y:' + event.offsetY); //獲取元素相對(duì)于頁(yè)面的坐標(biāo) console.log('X:'+$(this).offset().left+'\n Y:'+$(this).offset().top); });
驗(yàn)證碼倒計(jì)時(shí)代碼
<!-- dom --> <input id="send" type="button" value="發(fā)送驗(yàn)證碼">
// 原生js版本 var times = 60, // 臨時(shí)設(shè)為60秒 timer = null; document.getElementById('send').onclick = function () { // 計(jì)時(shí)開(kāi)始 timer = setInterval(function () { times--; if (times <= 0) { send.value = '發(fā)送驗(yàn)證碼'; clearInterval(timer); send.disabled = false; times = 60; } else { send.value = times + '秒后重試'; send.disabled = true; } }, 1000); } // jQuery版本 var times = 60, timer = null; $('#send').on('click', function () { var $this = $(this); // 計(jì)時(shí)開(kāi)始 timer = setInterval(function () { times--; if (times <= 0) { $this.val('發(fā)送驗(yàn)證碼'); clearInterval(timer); $this.attr('disabled', false); times = 60; } else { $this.val(times + '秒后重試'); $this.attr('disabled', true); } }, 1000); });
常用的一些正則表達(dá)式
//匹配字母、數(shù)字、中文字符 /^([A-Za-z0-9]|[\u4e00-\u9fa5])*$/ //驗(yàn)證郵箱 /^\w+@([0-9a-zA-Z]+[.])+[a-z]{2,4}$/ //驗(yàn)證手機(jī)號(hào) /^1[3|5|8|7]\d{9}$/ //驗(yàn)證URL /^http:\/\/.+\./ //驗(yàn)證身份證號(hào)碼 /(^\d{15}$)|(^\d{17}([0-9]|X|x)$)/ //匹配中文字符的正則表達(dá)式 /[\u4e00-\u9fa5]/ //匹配雙字節(jié)字符(包括漢字在內(nèi)) /[^\x00-\xff]/
js時(shí)間戳、毫秒格式化
function formatDate(now) { var y = now.getFullYear(); var m = now.getMonth() + 1; // 注意js里的月要加1 var d = now.getDate(); var h = now.getHours(); var m = now.getMinutes(); var s = now.getSeconds(); return y + "-" + m + "-" + d + " " + h + ":" + m + ":" + s; } var nowDate = new Date(2016, 5, 13, 19, 18, 30, 20); console.log(nowDate.getTime()); // 獲得當(dāng)前毫秒數(shù): 1465816710020 console.log(formatDate(nowDate));
js限定字符數(shù)(注意:一個(gè)漢字算2個(gè)字符)
<input id="txt" type="text">
//字符串截取 function getByteVal(val, max) { var returnValue = ''; var byteValLen = 0; for (var i = 0; i < val.length; i++) { if (val[i].match(/[^\x00-\xff]/ig) != null) byteValLen += 2; else byteValLen += 1; if (byteValLen > max) break; returnValue += val[i]; } return returnValue; } $('#txt').on('keyup', function () { var val = this.value; if (val.replace(/[^\x00-\xff]/g, "**").length > 14) { this.value = getByteVal(val, 14); } });
js判斷是否移動(dòng)端及瀏覽器內(nèi)核
var browser = { versions: function() { var u = navigator.userAgent; return { trident: u.indexOf('Trident') > -1, //IE內(nèi)核 presto: u.indexOf('Presto') > -1, //opera內(nèi)核 webKit: u.indexOf('AppleWebKit') > -1, //蘋(píng)果、谷歌內(nèi)核 gecko: u.indexOf('Firefox') > -1, //火狐內(nèi)核Gecko mobile: !!u.match(/AppleWebKit.*Mobile.*/), //是否為移動(dòng)終端 ios: !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/), //ios android: u.indexOf('Android') > -1 || u.indexOf('Linux') > -1, //android iPhone: u.indexOf('iPhone') > -1 , //iPhone iPad: u.indexOf('iPad') > -1, //iPad webApp: u.indexOf('Safari') > -1 //Safari }; } } if (browser.versions.mobile() || browser.versions.ios() || browser.versions.android() || browser.versions.iPhone() || browser.versions.iPad()) { alert('移動(dòng)端'); }
之前我用過(guò)一個(gè)檢測(cè)客戶(hù)端的庫(kù) 覺(jué)得挺好用的,也推薦給大家 叫 device.js,大家可以 Googel 或 百度
GItHub倉(cāng)庫(kù)地址:https://github.com/matthewhudson/device.js
getBoundingClientRect() 獲取元素位置
//它返回一個(gè)對(duì)象,其中包含了left、right、top、bottom四個(gè)屬性 var myDiv = document.getElementById('myDiv'); var x = myDiv.getBoundingClientRect().left; var y = myDiv.getBoundingClientRect().top; // 相當(dāng)于jquery的: $(this).offset().left、$(this).offset().top // js的:this.offsetLeft、this.offsetTop
HTML5全屏
function fullscreen(element) { if (element.requestFullscreen) { element.requestFullscreen(); } else if (element.mozRequestFullScreen) { element.mozRequestFullScreen(); } else if (element.webkitRequestFullscreen) { element.webkitRequestFullscreen(); } else if (element.msRequestFullscreen) { element.msRequestFullscreen(); } } fullscreen(document.documentElement);
相關(guān)文章
原生js實(shí)現(xiàn)計(jì)算購(gòu)物車(chē)總金額的示例
本文主要介紹了原生js實(shí)現(xiàn)計(jì)算購(gòu)物車(chē)總金額的示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-04-04基于JS實(shí)現(xiàn)數(shù)字+字母+中文的混合排序方法
這篇文章主要介紹了基于JS實(shí)現(xiàn)數(shù)字+字母+中文的混合排序方法的相關(guān)資料,非常不錯(cuò)具有參考借鑒價(jià)值,需要的朋友可以參考下2016-06-06ES6通過(guò)babel轉(zhuǎn)碼使用webpack使用import關(guān)鍵字
這篇文章主要介紹了es6通過(guò)babel轉(zhuǎn)碼還需要使用webpack才可以使用import關(guān)鍵字嗎的相關(guān)資料,需要的朋友可以參考下2016-12-12js實(shí)現(xiàn)ifram取父窗口URL地址的方法
這篇文章主要介紹了js實(shí)現(xiàn)ifram取父窗口URL地址的方法,是javascript操作window.parent對(duì)象非常典型的應(yīng)用技巧,需要的朋友可以參考下2015-02-02十個(gè)JavaScript?lodash中的高頻使用方法整理
本文梳理lodash中那些高頻使用的超究極無(wú)敵好用方法,熟練使用下面的十個(gè)方法能夠讓你的代碼原地起飛,為你的開(kāi)發(fā)之旅極大的減輕心智負(fù)擔(dān),快跟隨小編一起學(xué)習(xí)一下吧2024-01-01ES6字符串模板,剩余參數(shù),默認(rèn)參數(shù)功能與用法示例
這篇文章主要介紹了ES6字符串模板,剩余參數(shù),默認(rèn)參數(shù)功能與用法,結(jié)合具體實(shí)例形式分析了ECMAScript6中的6字符串模板,剩余參數(shù),默認(rèn)參數(shù)的概念、作用、使用方法與相關(guān)注意事項(xiàng),需要的朋友可以參考下2017-04-04JavaScript數(shù)組中reduce方法的應(yīng)用詳解
JavaScript 中的reduce()方法可以用于將數(shù)組元素匯總為單個(gè)值,,所以本文為大家整理了一些JavaScript數(shù)組中reduce方法的應(yīng)用,需要的可以參考一下2023-07-07