主要记录一些工做上碰到的问题,不按期跟新
一、由于工做调接口,后端返回字段常常变化,今天遇到这样一个问题。后端
// 判断返回 arr ,若是是 null 或 [] 空数组就显示'' // 假设返回字段是 usersName // 初始想法,经过if语句,进行判断,确认返回值。 var userName = []; var str = ''; if (userName) {//空数组为true alert(123); str = userName.join(); } // 这样能够实现需求,可是突然想到一个细节,这个方法只能判断null为false,可是判断userName 空数组则为ture。 // 若是不是简单的执行join()方法,逻辑上确定会报错。其原理是由于,null是对象空指针,布尔值为false // 而[]空数组是一个数组对象,布尔值为ture,因此会执行if里边的语句。
二、JS对象不能够直接调用JQ方法数组
<!-- 使用JQ方法时,注意将DOM对象转换为JQ对象 --> <!-- 好比,使用jQ判断点击对象是否包含某一属性值。--> <span class="cs cs-one" onclick="edit(this)">点击我</span> <script> function edit(obj) { // 会报错 if ( obj.hasClass('cs-one') ) { alert('ok'); } } </script> <!-- 执行语句会报错,hasClass not function。 --> <!-- 由于hasClass是JQ方法,而经过jS的DOM对象调用方法就会报错。 --> <!-- 须要将JS对象转成JQ对象 $(obj) --> <script> function edit(obj) { // 正确 if ( $(obj).hasClass('cs-one') ) { alert('ok'); } } </script> <!-- 问题:JS对象能够直接调用JQ方法吗? -->
三、如何获取href连接中字符对应的值this
var id = GetArgsFromHref(href,"id");//获取id function GetArgsFromHref(sHref, sArgName){ var args = sHref.split("?");//将连接切分红数组 var retval = "";//须要返回的字符串 if(args[0] == sHref){//参数为空 return retval;//返回空字符串,无需作任何处理 } var str = args[1];//获取?后边字符串 args = str.split("&");//将字符串以&切分红数组 for(var i = 0; i < args.length; i ++){//遍历切分后的数组 str = args[i]; var arg = str.split("=");//切分数组中的字符串 if(arg.length <= 1) continue;//没有=后边的值跳过 if(arg[0] == sArgName) retval = arg[1];//获取到对应的值 } return retval;//返回对应的值 }