摘要:生成隨機生成一個唯一的這個方法用于生成一個隨機,可以將生成的視為全局唯一的生成兩個相同的情況很少。似乎在前端用的比較少,目前項目用到就是在每次請求后端接口時調(diào)用此方法,生成一個傳過去。
前言
以下代碼來自:自己寫的、工作項目框架上用到的、其他框架源碼上的、網(wǎng)上看到的。
主要是作為工具函數(shù),服務于框架業(yè)務,自身不依賴于其他框架類庫,部分使用到es6/es7的語法使用時要注意轉(zhuǎn)碼
雖然盡量在函數(shù)中做了錯誤情況的處理,仍有可能出現(xiàn)報錯的情況(不定期完善)
/** *獲取url上的參數(shù) * @return {object} * @example * getRequest() getRequest().paramA */ function getRequest() { var searchString = window.location.search.substring(1), params = searchString.split("&"), hash = {}; if (searchString == "") return {}; for (var i = 0; i < params.length; i++) { var pos = params[i].indexOf("="); if (pos == -1) { continue; } var paraName = params[i].substring(0, pos), paraValue = params[i].substring(pos + 1); hash[paraName] = paraValue; } return hash; }
?返回一個對象,將url上的參數(shù)以鍵值對的形式存儲在返回結(jié)果中,如果url上沒參數(shù),則返回空對象
/** * 計算兩個日期時間的時間差 * @param {Date, Date} date1 date2 * @return {object | null} * @example * getDiff(new Date("2017-09-08"), new Date()) */ function getDiff(date1, date2) { if (!date1.getTime || !date2.getTime) return null var ms = (date1.getTime() - date2.getTime()); var day1 = Math.round(ms / 24 / 3600 / 1000), hh1 = Math.round((ms / 3600 / 1000) % 24), mm1 = Math.round((ms / 1000 / 60) % 60), ss1 = Math.round((ms / 1000) % 60); return { day: day1, hour: hh1, minute: mm1, second: ss1 }; }
?傳入兩個Date日期對象,返回一個對象,其屬性值day、hour、minute、second分別表示相差天數(shù)、小時、分鐘、秒。結(jié)果以Math.round()取整,如果結(jié)果為負,則表示第一個日期在第二個日期前面
/** * 將canvas轉(zhuǎn)化為image格式 * @param {string} cId * @return {object HTMLImageElement} * @example * canvasToImg("canvas") canvasToImg("#canvarsId") */ function canvasToImg(cId){ let canvas = document.querySelector(cId) if (!canvas || !canvas.toDataURL) return new Image() let imgData = canvas.toDataURL("image/png"), imgs= new Image(); imgs.src=imgData; return imgs }
?傳入一個css選擇器,函數(shù)根據(jù)選擇器查詢canvas節(jié)點,然后返回該canvas的image格式節(jié)點,如果查找不到則返回一個空的image。原理是將canvas轉(zhuǎn)化為base64編碼,toDataURL方法貌似是canvas節(jié)點獨有的,然后新建一個src是這個base64編碼的圖片。
?ps:什么情況下需要做這種轉(zhuǎn)換呢?目前我知道的一個就是canvas在移動端無法長按保存到手機。
/** * 生成一個唯一的guid * @return {string} * @example * // 7f603b20-17ff-4f47-aeb9-e7996de04939 * util.guid(); * @see http://stackoverflow.com/questions/105034/create-guid-uuid-in-javascript */ function guid () { return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, function(c) { var r = Math.random()*16|0, v = c == "x" ? r : (r&0x3|0x8); return v.toString(16); }); }
?這個方法用于生成一個隨機guid,可以將生成的guid視為全局唯一的(生成兩個相同id的情況很少)。guid似乎在前端用的比較少,目前項目用到就是在每次請求后端接口時調(diào)用此方法,生成一個guid傳過去。
function isLeapYear (year) { if (year % 100 === 0) { if (year % 400 === 0) { return true; } } else if (year % 4 === 0) { return true; } return false; } /** * 獲取某個月份有多少天 * @return {number} * @param {string | number} year month * @example * getDaysInMonth(2017, 9) */ function getDaysInMonth (year, month) { return [31, isLeapYear(year) ? 29 : 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][month]; }
?傳入一個年份和月份,返回該月有多少天,其中也包含了一個isLeapYear方法來判斷是否是閏年,應該在實現(xiàn)日歷或者日期選擇組件時用的到
結(jié)語?暫時就寫這么多了,后面不定期補充。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/88544.html
摘要:生成隨機生成一個唯一的這個方法用于生成一個隨機,可以將生成的視為全局唯一的生成兩個相同的情況很少。似乎在前端用的比較少,目前項目用到就是在每次請求后端接口時調(diào)用此方法,生成一個傳過去。 前言 以下代碼來自:自己寫的、工作項目框架上用到的、其他框架源碼上的、網(wǎng)上看到的。 主要是作為工具函數(shù),服務于框架業(yè)務,自身不依賴于其他框架類庫,部分使用到es6/es7的語法使用時要注意轉(zhuǎn)碼 雖然盡...
摘要:導航組件使用詳解注意了,如果有小伙伴們發(fā)現(xiàn)運行作者提供的示例項目報如下的錯誤,可能是大家使用了命令導致的,解決這個錯誤的辦法就是將刪除,然后重新使用命令來安裝,最后使用來起服務,應該就不報錯了。 react-navigation導航組件使用詳解 注意了,如果有小伙伴們發(fā)現(xiàn)運行作者提供的react-navigation示例項目報如下的錯誤,可能是大家使用了 yarn install 命...
摘要:最近關注的重學前端系列文章,也想把已知的前端知識體系梳理一遍,夯實基礎的同時,總結(jié)提升。標準模式的排版和運作模式都是以該瀏覽器支持的最高標準運行。模式是目前最常用的模式。嚴格模式不允許展示型棄用元素和框架集。中空格不會被自動刪除。 最近關注winter的重學前端系列文章,也想把已知的前端知識體系梳理一遍,夯實基礎的同時,總結(jié)提升。接下來會從HTML、CSS、JS、性能、網(wǎng)絡安全、框架通...
閱讀 1459·2021-10-18 13:29
閱讀 2684·2021-10-12 10:18
閱讀 3580·2021-09-22 15:06
閱讀 2596·2019-08-29 17:09
閱讀 2787·2019-08-29 16:41
閱讀 1493·2019-08-29 13:48
閱讀 3226·2019-08-26 13:49
閱讀 3325·2019-08-26 13:34