前端日常笔记#1-实用代码片段

ajax 请求

$.ajax({
      type: 'POST',
      url: '',
      data: {
        postVar1: 'theValue1',
        postVar2: 'theValue2'
      },
      beforeSend: function() {
        // this is where we append a loading image
        // 在这里我们展示 loading 信息(图片或者文字)
        $('#ajax-panel').html('<div class="loading"><img src="/images/loading.gif" alt="Loading..." /></div>');
      },
      success: function(data) {
        if (data.status) {
          // 返回数据正常
          // 删除 loading 效果并处理数据 data.data     
        } else {
          // 返回数据异常
          // 删除 loading 效果并给予用户适当反馈信息
          console.log('返回数据异常');
        }
      },
      error: function() {
        // failed request; give feedback to user
        // 数据请求失败,给用户适当的反馈信息
        console.log('数据请求失败');
        $('#ajax-panel').html('<p class="error"><strong>Oops!</strong> Try that again in a few moments.</p>');
      },
      dataType: 'json'
});

// minimal
$.ajax({
  type: 'POST',
  url: '',
  data: {
    postVar1: 'theValue1',
    postVar2: 'theValue2'
  },
  success: function(data) {
    if (data.status) {
      // 返回数据正常
    } else {
      // 返回数据异常
      console.log('返回数据异常');
    }
  },
  error: function() {
    // failed request; give feedback to user
    // 数据请求失败,给用户适当的反馈信息
    console.log('数据请求失败');
  },
  dataType: 'json'
});

json 格式

{
    "status": 1,
    "info": "",
    "data": [……]
}

<!--空数据时-->
{
    status: 0,
    info: "",
    data: []
}

回到上一页

<button onclick="goBack()">Go Back</button>
<script>
function goBack() {
    window.history.back();
}
</script>

图片占位背景色

var w = $(document.body).width()*0.455;
$('.benefits_list .col-6 a').width(w);
$('.benefits_list .col-6 a').height(w*450/960);

default btn

.btn{
    display: inline-block;
    padding: 6px 12px;
    margin-bottom: 0;
    font-size: 14px;
    font-weight: 400;
    line-height: 1.42857143;
    text-align: center;
    white-space: nowrap;
    vertical-align: middle;
    cursor: pointer;
    border: 1px solid transparent;
    border-radius: 4px;
}
.btn-default{
    color: #333;
    background-color: #fff;
    border-color: #ccc;
}

计算时间差(天)

/*-------------------判断时间差 start---------------------*/
// From 2016-09-30 10:33 to "09/30/2016"(mm/dd/yyyy)
function dateFormat(someday){
    var date = someday.split(' ')[0];
    var dateArr = date.split('-');
    var result = [];
    result[0] = dateArr[1];
    result[1] = dateArr[2];
    result[2] = dateArr[0];
    return result.join('/');
}

// a and b are javascript Date objects
function dateDiffInDays(a, b) {
  var _MS_PER_DAY = 1000 * 60 * 60 * 24;
  // Discard the time and time-zone information.
  var utc1 = Date.UTC(a.getFullYear(), a.getMonth(), a.getDate());
  var utc2 = Date.UTC(b.getFullYear(), b.getMonth(), b.getDate());

  return Math.floor((utc2 - utc1) / _MS_PER_DAY);
}

// 判断相差几天?今天或者7天前
// 今天 today:var today = new Date();
// 某天 before:2016-09-30 10:33
function dateDiff(today,before){
    var someday = new Date(dateFormat(before));
    return dateDiffInDays(someday,today);
}
/*-------------------判断时间差 end---------------------*/

判断当前时间在指定时间的前后

var nowDate=new Date();
var now = nowDate.getTime();
var endDate = '2016/8/10 09:39:00';
var end = new Date(endDate).getTime();
if(end<=now){
    ...
}else{
    ...
}

sticky footer

function sticky($footer){
    var offset = $footer.offset();
    var windowH = $(window).height();
    var footerH = $footer.height();
    if((offset.top+footerH) < windowH){
        var diff = windowH - (offset.top+footerH);
        var top = (parseInt($footer.css('top')) + diff) + "px";
        $footer.css('top', top);
    }
}

动态添加的内容渐显

html

<div class="fade"></div>

css

.fade {
    opacity: 0;
    -webkit-transition: opacity .15s linear;
    -o-transition: opacity .15s linear;
    transition: opacity .15s linear;
}
.fade.in {
    opacity: 1;
}

js

setTimeout(function(){
    $('.fade').addClass('in');
},100);
<!--example-->
function showFeedback(txt, duration){
    $('.modal-fb-tip').text(txt);
    $('.modal-fb').removeClass('hidden');
    setTimeout(function(){
        $('.modal-fb.fade').addClass('in');
    },100);
    setTimeout(function(){
        $('.modal-fb.fade.in').removeClass('in');
        setTimeout(function(){
            $('.modal-fb').addClass('hidden');
        },100);
    },duration);
}

判断是否是数字,且满足某个区间

How do I check that a number is float or integer?

// check for a remainder when dividing by 1:

function isInt(n) {
   return n % 1 === 0;
}

//If you don't know that the argument is a number you need two tests:

function isInt(n){
    return Number(n) === n && n % 1 === 0;
}

function isFloat(n){
    return Number(n) === n && n % 1 !== 0;
}
parseInt("a")
==> NaN
isNaN(parseInt("a"))
true
isNaN(parseInt("1"))
false

replace broken img

onerror="this.onerror=null;this.src='imagefound.gif';"

绑定 input file 的 change 事件

document.getElementById('upload-file').addEventListener('change', function(){
    previewFile($('.action-upload-view img')[0], $('#upload-file')[0]);
})

file 类型的 input 只接受图片类文件

How to allow <input type=“file”> to accept only image files

<input type="file" name="myImage" accept="image/*" />

获取当前时间

Getting current date and time in JavaScript

// For the time now
Date.prototype.timeNow = function(){ return ((this.getHours() < 10)?"0":"") + ((this.getHours()>12)?(this.getHours()-12):this.getHours()) +":"+ ((this.getMinutes() < 10)?"0":"") + this.getMinutes() +":"+ ((this.getSeconds() < 10)?"0":"") + this.getSeconds() + ((this.getHours()>12)?('PM'):'AM'); };

// For todays date;
Date.prototype.today = function () { 
    return ((this.getDate() < 10)?"0":"") + this.getDate() +"/"+(((this.getMonth()+1) < 10)?"0":"") + (this.getMonth()+1) +"/"+ this.getFullYear();
}

var newDate = new Date();
var datetime = "LastSync: " + newDate.today() + " @ " + newDate.timeNow();
// Output: "LastSync: 18/10/2016 @ 09:10:35AM"
-----------------------------------------------
-----------------------------------------------
// For the time now
Date.prototype.timeNow = function() {
    return ((this.getHours() < 10) ? "0" : "") + this.getHours() + ":" + ((this.getMinutes() < 10) ? "0" : "") + this.getMinutes() + ":" + ((this.getSeconds() < 10) ? "0" : "") + this.getSeconds(); };

// For todays date;
Date.prototype.today = function() {
    return this.getFullYear() + "-" + (((this.getMonth() + 1) < 10) ? "0" : "") + (this.getMonth() + 1) + "-" + ((this.getDate() < 10) ? "0" : "") + this.getDate();
}

var newDate = new Date();
var datetime = newDate.today() + " " + newDate.timeNow();
// Output: "2016-10-18 09:18:04"

图片加载错误

jQuery/JavaScript to replace broken images

// 图片加载错误
function imgError(image) {
    image.onerror = "";
    image.src = "../img/default.jpg";
    return true;
}
onerror="imgError(this);"

移动端 input 框清除内阴影

box-shadow: none;
border: 0;
outline: 0;*

Get URL parameters using jQuery

// Get URL parameters using jQuery
// example.com?param1=name&param2=&id=6
// $.urlParam('param1'); // name
// $.urlParam('id');        // 6
// $.urlParam('param2');   // null
$.urlParam = function(name) {
    var results = new RegExp('[\?&]' + name + '=([^&#]*)').exec(window.location.href);
    if (results == null) {
        return null;
    } else {
        return results[1] || 0;
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,616评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,020评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,078评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,040评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,154评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,265评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,298评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,072评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,491评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,795评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,970评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,654评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,272评论 3 318
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,985评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,223评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,815评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,852评论 2 351

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,644评论 18 139
  • afinalAfinal是一个android的ioc,orm框架 https://github.com/yangf...
    passiontim阅读 15,417评论 2 45
  • 感觉到人类是相当伟大的物种,突破地狱文化的阻隔,通融互通,共同战胜困难重重,生存并且不断进化创新
    萤火虫的霞光阅读 89评论 0 0
  • 日精进打卡 姓名 温州市博奕成套设备工程有限公司 组别 301期 利他一组 【日精进打卡第021天】 【知~学...
    7bec976c3bf2阅读 204评论 0 0
  • 杯盖和杯身密不可分,但是杯身的心里却装着水,所以,在爱情中,在一个人的身边,不一定在那个人的心里。 笔帽和笔盖形影...
    赵小乖007阅读 268评论 0 0