zoukankan      html  css  js  c++  java
  • 简单分享javascript、jquery实用demo

    前端追随的javascript、jquery

    javascript判断移动端输入框页面自动焦点

    1 /*输入框元素定位,false为底部,true为顶部*/
    2 docuemnt.getElementById('id').scrollIntoView(false);

      

    javascript判断H5页面离开

     1 function onbeforeunloadFn(){
     2     console.log('离开页面');
     3     //...code
     4 }
     5 function showOnbeforeunload(flags){
     6     if(flags){
     7         document.body.onbeforeunload = onbeforeunloadFn;
     8     }else{
     9         document.body.onbeforeunload = null;
    10     }
    11 }
    12 $(function(){
    13     showOnbeforeunload(true);
    14 })

    jq判断img标签图片地址是否已经加载完毕

    1 imgStatus = 0;
    2 $("img").each(function(){
    3     if(this.complete){/*this.complete代表图片加载完成*/
    4         imgStatus++;
    5     }
    6 });

    iframe获取内容-和设置

    1 if($(".ad_show iframe").size() > 0 ){
    2     $(".ad_show iframe").attr("id","iframead");/*设置iframe的id*/
    3     /*获取id为iframead的iframe的dom对象*/
    4     var iframebox = document.getElementById("iframead").contentWindow;
    5     /*设置兜底内容*/
    6     iframebox.document.body.innerText = "1234";
    7 }

    javascript获取浏览器上一页的url

    1 /*返回上一次url,如果是新窗口则不能获取到*/
    2 var beforeUrl = document.referrer;

    关于头疼的移动端点击冒泡事件

     1 <script>
     2 $(".class").live('tap',function(oEvent){
     3     e = window.event || oEvent;
     4     if(e.stopPropagation){
     5         e.stopPropagation();
     6     }else{
     7         e.cancelBubble = true;
     8     }
     9     e.preventDefault();
    10 });
    11 </script>
    12 /*虽说tap事件可以阻止大部分冒泡事件,但是还是有一小部分移动端不吃你这套,那么有另外一个解决办法*/
    13 /*将层级间的事件通过H5属性data-flag="true"来控制*/
    14 <!--html-->
    15 <div class="parentTap" data-flag="true">
    16     <div class="childTap" data-flag="false">
    17         <div class="childsTap" data-flag="false">
    18             ....
    19         </div>
    20     </div>
    21 </div>
    22 <!--给父级parentTap绑定一个点击事件-->
    23 <!--给子级childTap绑定一个点击事件-->
    24 <!--给子孙级childsTap绑定一个点击事件-->
    25 <script type="text/javascript">
    26     var bindInit = function(className){
    27         if($(className).size() > 0){
    28             $(className).on('tap',function(oEvent){
    29                 e = window.event || oEvent;if(e.stopPropagation){e.stopPropagation();}else{e.cancelBubble = true;}e.preventDefault();
    30                 var flag = $(this).data('flag');
    31                 if(flag){/*为true时允许点击进入事件*/
    32                     /* code... */
    33                 }
    34             });
    35         }
    36     }
    37     $(function(){
    38         bindInit('.parentTap');
    39         bindInit('.childTap');
    40         bindInit('.childsTap');
    41     });
    42 </script>

    简单倒计时功能

     1 <div class="newTime" data-end="2016-10-13 23:59:59" data-now="2016-10-13 03:59:59">
     2     <div class="t_d"></div>
     3     <div class="t_h"></div>
     4     <div class="t_m"></div>
     5     <div class="t_s"></div>
     6 </div>
     7     <script type="text/javascript">
     8         /*倒计时*/
     9         var timeDown = {
    10             GetRTime: function (timeId,oldNowTime) {
    11                 var tempTime;/*保存上一次时间*/
    12                 if(oldNowTime){
    13                     tempTime = new Date(oldNowTime.getTime() + 1000);/*如果有上一次时间则赋值*/
    14                     /*console.log(tempTime);*/
    15                 }
    16                 var EndTime = new Date($("#" + timeId).data("end"));/*获取结束时间*/
    17                 if (!tempTime) {
    18                     if ($("#" + timeId).data("now") == "" || $("#" + timeId).data("now") == "null") {
    19                         var NowTime = new Date();
    20                     } else {
    21                         var NowTime = new Date($("#" + timeId).data("now"));/*取开始时间*/
    22                     }
    23                 } else {
    24                     var NowTime = tempTime;
    25                 }
    26                 if (EndTime.getTime() >= NowTime.getTime()) {/*判断时间*/
    27                     var t = EndTime.getTime() - NowTime.getTime();/*得到结束时间减去开始时间的时间戳*/
    28                     var d = Math.floor(t / 1000 / 60 / 60 / 24);/**/
    29                     var h = Math.floor(t / 1000 / 60 / 60 % 24);/**/
    30                     var m = Math.floor(t / 1000 / 60 % 60);/**/
    31                     var s = Math.floor(t / 1000 % 60);/**/
    32                     /*将时间填入对应的html中*/
    33                     $(".t_d", "#" + timeId).html((d > 9 ? '' : '0') + d);
    34                     $(".t_h", "#" + timeId).html((h > 9 ? '' : '0') + h);
    35                     $(".t_m", "#" + timeId).html((m > 9 ? '' : '0') + m);
    36                     $(".t_s", "#" + timeId).html((s > 9 ? '' : '0') + s);
    37                     tempTime = new Date(NowTime.getTime() + 1000);/*将开始时间+1秒*/
    38                     setTimeout(function () {
    39                         timeDown.GetRTime(timeId,NowTime);/*等待一秒后继续执行*/
    40                     }, 1000);
    41                 } else if (EndTime.getTime() == NowTime.getTime()) {/*当时间相等时要做处理的code*/
    42                     $("#"+timeId).hide();
    43                 }
    44             }
    45         }
    46         var t=0;
    47         if ($(".newTime").size() > 0) {
    48             $(".newTime").each(function(){
    49                 var timeId="timeOut"+t;
    50                 $(this).attr("id",timeId);/*设置多个倒计时时指定唯一id*/
    51                 t++;
    52                 timeDown.GetRTime(timeId,null);/*开始调用*/
    53             });
    54         }
    55     </script>

    jQuery的节点操作

     1 jQuery.parent(expr) /*找父亲节点,可以传入expr进行过滤,比如$("span").parent()或者$("span").parent(".class")*/
     2 
     3 jQuery.parents(expr) /*类似于jQuery.parents(expr),但是是查找所有祖先元素,不限于父元素*/
     4 
     5 jQuery.children(expr) /*返回所有子节点,这个方法只会返回直接的孩子节点,不会返回所有的子孙节点*/
     6 
     7 jQuery.contents() /*返回下面的所有内容,包括节点和文本。这个方法和children()的区别就在于,包括空白文本,也会被作为一个*/
     8 
     9 /*
    10     jQuery对象返回,children()则只会返回节点
    11 
    12     jQuery.prev(),返回上一个兄弟节点,不是所有的兄弟节点
    13 
    14     jQuery.prevAll(),返回所有之前的兄弟节点
    15 
    16     jQuery.next(),返回下一个兄弟节点,不是所有的兄弟节点
    17 
    18     jQuery.nextAll(),返回所有之后的兄弟节点
    19 
    20     jQuery.siblings(),返回兄弟姐妹节点,不分前后
    21 
    22     jQuery.find(expr),跟jQuery.filter(expr)完全不一样。
    23     jQuery.filter()是从初始的jQuery对象集合中筛选出一部分,
    24     而jQuery.find()的返回结果,不会有初始集合中的内容,
    25     比如$("p"),find("span"),是从<p>元素开始找<span>,等同于$("p span")
    26 */

    js中if判断语句中的in语法

     1 /*
     2 在js代码中
     3 通常的if判断语句会这样写:
     4 */
     5 if(1 == 1){
     6     alert("1等于1");
     7 }else{
     8     alert("1不等于1");
     9 }
    10 /*而在in写法下可以这样:*/
    11 if(1 in window){
    12     alert("window包含1");
    13 }else{
    14     alert("window不包含1");
    15 }

    js的try-catch

     1 try{
     2     foo.bar();
     3 }catch(e){
     4     console.log(e.name + ":" + e.message);
     5 }
     6 try{
     7     throw new Error("Whoops!");
     8 }catch(e){
     9     console.log(e.name + ":" + e.message);
    10 } 
    11 /*
    12 改js代码会捕获一个异常错误:
    13     因为foo.bar();是未定义的;
    14     因此在js代码中如果没有异常捕获,整个页面都不会继续解析.
    15     从而导致页面加载失败.
    16     这里就需要通过try-catch来异常捕获这种错误,并把他反馈出来
    17 
    18 目前我们可能得到的系统异常主要包含以下6种:
    19     EvalError: raised when an error occurs executing code in eval()
    20         翻译:当一个错误发生在eval()执行代码 
    21     RangeError: raised when a numeric variable or parameter is outside of its valid range  
    22         翻译:当一个数值变量或参数的有效范围之外
    23     ReferenceError: raised when de-referencing an invalid reference 
    24         翻译:引用无效的引用
    25     SyntaxError: raised when a syntax error occurs while parsing code in eval()
    26         翻译:语法错误,当发生语法错误在eval()解析代码里
    27     TypeError: raised when a variable or parameter is not a valid type  
    28         翻译:错误类型:当一个变量或参数不是一个有效的类型
    29     URIError: raised when encodeURI() or decodeURI() are passed invalid parameters   
    30         翻译:调用encodeURI()或decodeURI()时,传入的参数是不通过无效的
    31 
    32 以下是异常捕获是的属性:
    33     Error具有下面一些主要属性:
    34         description: 错误描述 (仅IE可用).  
    35         fileName: 出错的文件名 (仅Mozilla可用).  
    36         lineNumber: 出错的行数 (仅Mozilla可用).  
    37         message: 错误信息 (在IE下同description)  
    38         name: 错误类型.  
    39         number: 错误代码 (仅IE可用).  
    40         stack: 像Java中的Stack Trace一样的错误堆栈信息 (仅Mozilla可用).
    41 */ 
    42 /*
    43     如要判断异常信息的类型,可在catch中进行判断:
    44  */
    45 
    46 try {
    47     coo.bar();//捕获异常,ReferenceError:引用无效的引用
    48 }catch(e){
    49     console.log(e instanceof EvalError);
    50     console.log(e instanceof RangeError);
    51     if(e instanceof EvalError){ 
    52         console.log(e.name + ":" + e.message);
    53     }else if(e instanceof RangeError){
    54         console.log(e.name + ":" + e.message); 
    55     }else if(e instanceof ReferenceError){
    56         console.log(e.name + ":" + e.message); 
    57     }
    58 } 

    js中typeof和instanceof区别

     1 /*先捕获异常,抛出异常*/
     2 try {
     3     throw new myBlur(); // 抛出当前对象 
     4 }catch(e){
     5     console.log(typeof(e.a)); //返回function类型
     6     if(e.a instanceof Function){//instanceof用于判断一个变量是否某个对象的实例,true
     7         console.log("是一个function方法");
     8         e.a();//执行这个方法,输出"失去焦点"
     9     }else{
    10         console.log("不是一个function方法");
    11     }
    12 }
    13 function myBlur(){
    14     this.a = function(){
    15         console.log("失去焦点");
    16     };
    17 }
    18 
    19 /*
    20     通畅typeof一般只能返回如下几个结果:
    21     number,boolean,string,function,object,undefined;
    22     如果要用if做比较则比较后面要用双引号引起来
    23 */
    24     if(typeof(param) == "object"){
    25         alert("该参数等于object类型");
    26     }else{
    27         alert("该参数不等于object类型");
    28     }
    29 
    30 /*又如:*/
    31 console.log(Object instanceof Object);//true
    32 console.log(Function instanceof Function);//true 
    33 console.log(Number instanceof Number);//false
    34 console.log(String instanceof String);//false
    35 console.log(Function instanceof Object);//true
    36 console.log(Foo instanceof Function);//true
    37 console.log(Foo instanceof Foo);//false

    HTML5缓存sessionStorage

     1 sessionStorage.getItem(key)//获取指定key本地存储的值
     2 sessionStorage.setItem(key,value)//将value存储到key字段
     3 sessionStorage.removeItem(key)//删除指定key本地存储的值
     4 sessionStorage.length//sessionStorage的项目数
     5 
     6 /*
     7 sessionStorage与localStorage的异同:
     8     sessionStorage和localStorage就一个不同的地方,
     9     sessionStorage数据的存储仅特定于某个会话中,
    10     也就是说数据只保持到浏览器关闭,当浏览器关闭后重新打开这个页面时,之前的存储已经被清除。
    11     而localStorage是一个持久化的存储,它并不局限于会话
    12 
    13 sessionStorage和localStorage的clear()函数的用于清空同源的本地存储数据:
    14     比如localStorage.clear(),它将删除所有同源的本地存储的localStorage数据,
    15     而对于SessionStorage,它只清空当前会话存储的数据。
    16 
    17 sessionStorage和localStorage具有相同的方法storage事件:
    18     在存储事件的处理函数中是不能取消这个存储动作的。
    19     存储事件只是浏览器在数据变化发生之后给你的一个通知。
    20     当setItem(),removeItem()或者clear() 方法被调用,
    21     并且数据真的发生了改变时,storage事件就会被触发。
    22     注意这里的的条件是数据真的发生了变化。也就是说,
    23     如果当前的存储区域是空的,你再去调用clear()是不会触发事件的。
    24     或者你通过setItem()来设置一个与现有值相同的值,事件也是不会触发的。
    25     当存储区域发生改变时就会被触发。
    26 */

    以上内容仅供参考

     

  • 相关阅读:
    C语言 exit 函数 C语言零基础入门教程
    C/C++ getchar函数 C语言零基础入门教程
    自己动手重新实现LINQ to Objects: 7 Count和LongCount
    自己动手重新实现LINQ to Objects: 5 Empty
    自己动手重新实现LINQ to Objects: 8 Concat
    自己动手重新实现LINQ to Objects: 11 First,Last,Single以及它们带有OrDefault的重载
    自己动手重新实现LINQ to Objects: 3 Select
    自己动手重新实现LINQ to Objects: 2 Where
    自己动手重新实现LINQ to Objects: 10 Any和All
    用豆瓣读书Chrome插件,简单购买电子书
  • 原文地址:https://www.cnblogs.com/wangji817/p/5980115.html
Copyright © 2011-2022 走看看