第七章 类的操作和json简介
1.类的操作
1.通过style标签,每修改一次样式,浏览器就需要重新渲染一次
这样的执行性能比较差,而且这种形式当我们要修改多个样式时,也不方便
2.我们可以通过修改元素的class属性来间接修改样式
这样我们之需要修改一次,即可以修改多个样式
浏览器只需要重新渲染页面一次,性能较好
并且这种方式可以将行为和表现分开,低耦合
通过box.className+=" class2";//可以在原来样式的基础之上添加样式
//定义一个函数,用来向一个元素中添加指定的class属性值
/*
* 参数:
* obj 要添加class属性的元素
* cn 要添加的class值
*
*/
function addClass(obj , cn){
//检查obj中是否含有cn
if(!hasClass(obj , cn)){
obj.className += " "+cn;
}
}
/*
* 判断一个元素中是否含有指定的class属性值
* 如果有该class,则返回true,没有则返回false
*
*/
function hasClass(obj , cn){
//判断obj中有没有cn class
//创建一个正则表达式
//var reg = /\bb2\b/;
var reg = new RegExp("\\b"+cn+"\\b");
return reg.test(obj.className);
}
/*
* 删除一个元素中的指定的class属性
*/
function removeClass(obj , cn){
//创建一个正则表达式
var reg = new RegExp("\\b"+cn+"\\b");
//删除class
obj.className = obj.className.replace(reg , "");
}
/*
* toggleClass可以用来切换一个类
* 如果元素中具有该类,则删除
* 如果元素中没有该类,则添加
*/
function toggleClass(obj , cn){
//判断obj中是否含有cn
if(hasClass(obj , cn)){
//有,则删除
removeClass(obj , cn);
}else{
//没有,则添加
addClass(obj , cn);
}
}
2.json简介
js对象只有js自己认识,其他语言都不认识
json就是特殊格式的字符串,这个字符串可以被任意语言识别
并且可以转换为任意语言中的对象json在开发中主要用来数据的交互
1.json(JavaScript Object Notation,js对象表示法)
json和js对象的格式一样,只不过json字符串中的属性名必须加双引号
json分类
1.对象{};
2.数组[];
json中允许的值:
1.字符串
2.数值
3.布尔值
4.null(undefined不行)
5.对象(单纯的对象,不能是函数)
6.数组
2.将json字符串转换为js中的对象
在js中,为我们提供了一个工具类,就叫JSON
这个对象可以帮助我们将json对象转换为js对象,也可以将一个js对象转换为json
json->js对象
JSON.parse()
可以将json字符串转换为js对象
它需要一个json字符串作为参数,会将该字符串转换为js对象
js对象->json
JSON.stringify()
可以将一个JS对象转换为JSON字符串
需要一个js对象作为参数,会返回一个json字符串
3.JSON这个对象在IE7及以下的浏览器不支持,所以会在这些浏览器中报错
IE7及以下要使用eval()函数(不推荐)
如果使用eval()执行的字符串中含有{},它会将{}当成代码块
如果不希望将其当成代码块解析,则需要再字符串前后各加一个()
eval()这个函数功能很强大,可以直接执行一个字符串中的js代码
但是开发中尽量不要使用,首先它的执行性能比较差,然后它还具有安全隐患
4.最终方案
如果需要兼容IE7及以下json操作,则可以通过引入一个外部js文件来处理
然后操作跟其他浏览器一样