主要记录一些工作上碰到的问题,不定期跟新
1、因为工作调接口,后端返回字段经常变化,今天遇到这样一个问题。
// 判断返回 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里边的语句。
2、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方法吗? -->
3、如何获取href链接中字符对应的值
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;//返回对应的值
}