一些遇到的问题及解决方案

前言

在我们的学习与工作中,总会遇到一些问题,如果不进行总结与记录,我们很快就会忘记,,,

1、jquery ajax 中不能给变量赋值的原因及解决办法

我们在用JQuery的Ajax从后台提取数据后想把它赋值给全局变量,但是却怎么都赋不进,为什么呢?

原因其实很简单,我们用的Ajax是异步操作,也就是说在你赋值的时候数据还没提取出来,你当然赋不进去,所以只要改成同步操作就行

解决办法:

把异步改成同步,如下,加上async: false,它就能赋值了

               var user = null
               $.ajax({
    
    
                    url: "/user/findByName",
                    type: "get",
                    dataType: "json",
                    async: false,
                    data: {
    
    
                        name:name
                    },
                    success:function (data){
    
    
                        if (data.data.user!=null){
    
    
                            user = data.data.user
                        }
                    }
                })

2、将日期转换为指定的格式

为Date原型添加如下的方法

Date.prototype.format = function(fmt) {
    
     
     var o = {
    
     
        "M+" : this.getMonth()+1,                 //月份 
        "d+" : this.getDate(),                    //日 
        "h+" : this.getHours(),                   //小时 
        "m+" : this.getMinutes(),                 //分 
        "s+" : this.getSeconds(),                 //秒 
        "q+" : Math.floor((this.getMonth()+3)/3), //季度 
        "S"  : this.getMilliseconds()             //毫秒 
    }; 
    if(/(y+)/.test(fmt)) {
    
    
            fmt=fmt.replace(RegExp.$1, (this.getFullYear()+"").substr(4 - RegExp.$1.length)); 
    }
     for(var k in o) {
    
    
        if(new RegExp("("+ k +")").test(fmt)){
    
    
             fmt = fmt.replace(RegExp.$1, (RegExp.$1.length==1) ? (o[k]) : (("00"+ o[k]).substr((""+ o[k]).length)));
         }
     }
    return fmt; 
}  

添加完之后,我们可以这样调用

    var time = new Date().format("yyyy-MM-dd hh:mm:ss");
    console.log(time1);

在这里插入图片描述
也可以这样调用

    var time1 = new Date().format("yyyy-MM-dd");
    console.log(time1);

在这里插入图片描述

3、对于jQuery使用append追加的节点无法添加事件无效的解决方法

有时我们在新添加的元素中的事件失效,其原因是我们在初始化事件的时候,并没有这些新添加的元素,所以就不能绑定事件。

为此,我们需要jQuery中的on方法绑定事件。不能直接添加相应的事件,以click事件为例

<!DOCTYPE html>
<html>
<head>
<script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js">
</script>
<script>
$(document).ready(function(){
    
    
  $("div").on("click","p",function(){
    
    
    $(this).slideToggle();
  });
  $("button").click(function(){
    
    
    $("<p>This is a new paragraph.</p>").insertAfter("button");
  });
});
</script>
</head>
<body>

<div style="background-color:yellow">
<p>This is a paragraph.</p>
<p>Click any p element to make it disappear. Including this one.</p>
<button>Insert a new p element after this button</button>
</div>

</body>
</html>

猜你喜欢

转载自blog.csdn.net/weixin_43520670/article/details/112549582