js里的常用方法

form表单转json对象

/**

     * 自动将form表单封装成json对象

     */

    $.fn.serializeObject = function() {

        var o = {};

        var a = this.serializeArray();

        $.each(a, function() {

            if (o[this.name]) {

                if (!o[this.name].push) {

                    o[this.name] = [ o[this.name] ];

                }

                o[this.name].push(this.value || '');

            } else {

                o[this.name] = this.value || '';

            }

        });

        return o;

};


var formJson = $("#xxxForm").serializeObject();

//在formJson 里添加info信息
formJson ["info"] ="XXX";

 

serialize() 序列化表单元素为字符串

$("#form").serialize();

serializeArray()序列化表单元素为对象数组

$("#form").serializeArray();

JSON.stringify()将对象或者数组转换为JSON字符串

JSON.stringify() 方法用于将 JavaScript 值转换为 JSON 字符串。

返回包含 JSON 文本的字符串。

JSON.stringify(value[, replacer[, space]])

value:  必需, 要转换的 JavaScript 值(通常为对象或数组。

replacer:  可选。用于转换结果的函数或数组。

    如果 replacer 为函数,则 JSON.stringify 将调用该函数,并传入每个成员的键和值。使用返回值而不是原始值。如果此函数返回 undefined,则排除成员。根对象的键是一个空字符串:""。

    如果 replacer 是一个数组,则仅转换该数组中具有键值的成员。成员的转换顺序与键在数组中的顺序一样。

space:可选,文本添加缩进、空格和换行符,如果 space 是一个数字,则返回值文本在每个级别缩进指定数目的空格,如果 space 大于 10,则文本缩进 10 个空格。space 也可以使用非数字,如:\t。

 

获取form表单serializeArray()里为空的值

    

    var flagParm = "";

        for (var i = 0; i < $("#xxxForm").serializeArray().length; i++) {

            if($("#xxxForm").serializeArray()[i].value=="" || $("#xxxForm").serializeArray()[i].value ==null){

               flagParm += $("#xxxForminput[name='"+$("#xxxForm").serializeArray()[i].name+"']").attr("placeholder")+"、";

           }

        }

Jquery $.extend的使用

jQuery.extend() 函数用于将一个或多个对象的内容合并到目标对象。

/**

 * 通用js方法封装处理

 */

(function ($) {

    $.extend({

        // 通用方法封装处理

    common: {

        // 判断字符串是否为空

            isEmpty: function (value) {

                if (value == null || this.trim(value) == "") {

                    return true;

                }

                return false;

            },

            // 判断一个字符串是否为非空串

            isNotEmpty: function (value) {

            return !$.common.isEmpty(value);

            },

            // 是否显示数据 为空默认为显示

            visible: function (value) {

                if ($.common.isEmpty(value) || value == true) {

                    return true;

                }

                return false;

            },

            // 空格截取

            trim: function (value) {

                if (value == null) {

                    return "";

                }

                return value.toString().replace(/(^\s*)|(\s*$)|\r|\n/g, "");

            },

            // 指定随机数返回

            random: function (min, max) {

                return Math.floor((Math.random() * max) + min);

            }

        }

    });

})(jQuery);

 

$(function(){
            $.zd.t1("ccc");
            $.zd.t2();
            $.zd.t3();
});

$.extend({ 
        	zd:{
        		t1:function(v){
        			console.log(v);
        		},
        		t2:function(){
        			console.log("222");
        		},
        		t3:function(){
        			console.log("333");
        		}
        	}
});

 

 

js数组里添加元素

var num= [];
num.push(value);
num.push(name);

js数组里删除元素

function removeArray(array, val) {
	    var index = array.indexOf(val);
	    if (index > -1) {
	    	array.splice(index, 1);
	    }
	}



//删除:
var test= ['1','2','3','4']  

removeArray(test, '1');  

js数组转字符串
 


var test= ['1','2','3','4']  
test.join(',');//1,2,3,4  使用,拼接数组元素

 

js map里添加元素

var map = {};
map["name"] = name;
map["value"] = value;

js里each的使用

$.each(data, function (index, item) {
    console.log(index);
    console.log(item.name);
});

js里在onclick中传递json对象

直接传递对象在方法中会是一个object这个时候,在传递之前需要对对象进行格式编辑一下

return '<img style="cursor:hand" src="/xxx/pencil.png" title="修改" onclick="addAndUpdate('+JSON.stringify(record.json).replace(/"/g, '&quot;')+');">';
								

js把方法作为参数传递

                $(function(){
			sentFunction(test1);
		})
		
		function test1(){//预传递的方法
		   alert('测试');
		}
		function sentFunction(p){//执行传递的方法
		   p();//执行参数表示的函数
		}

ajax的作用域问题


在ajax外部有一个参数parma,参数是有值的
但是在ajax内的success方法中输出值却为undefined

var param = "1";

$ajax({
url:
data:
async:
success:function(data){
console.log(param);//undefined
}})

首先定义一个变量name 给name一个初始值(第一步)
然后在ajax里console一下name(第二步)
最后在ajax下方再console一下name (第三步)

测试发现 在同步或异步状态下 最后输出的结果都是:
在ajax内部打印的参数为初始值
推测可能跟ajax调用时间、变量在js里面的生命周期有关系
若ajax调用时间过长,可能会出现变量在ajax中为 undefined的效果

首先定义一个变量name 给name一个初始值(第一步)
然后在ajax里console一下name(第二步)
最后在ajax下方改变一下name的值再console一下name (第三步)

测试发现在ajax异步情况下,第一步为初始值,第二步和第三步相同都是改变后的值
程序顺序是: 第一步,第三步,第二步

测试发现在ajax同步情况下,第一步和第二步相同都是初始值,第三步是改变后的值
程序顺序是: 第一步,第二步,第三步


--------------------------

在ajax的success方法内定义的变量,如何将值传出success


首先 在ajax外,定义一个变量 name 直接console 设置为第一步
在ajax中对name进行了改变 然后console 设置为第二步
最后在ajax下方再console一下name 设置为第三步
浏览器调试发现:第一步 与第三步的值相同,都为初始值, 第二步输出的是改变后的值
而且程序输出的顺序是 第一步,第三步,第二步

虽然在ajax中对name变量进行了改变,但是出了ajax后该name变量却为初始值了。
这是因为ajax默认是异步调用
程序输出的顺序才是 第一步,第三步,第二步


将ajax的async设置为false(同步)
在浏览器发现 第一步为初始值,第二步为改变后的值,第三步为改变后的值
而且程序输出书序是 第一步 第二步 第三步


--------------------------


 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值