通过style属性来修改元素的样式,每修改一个样式,浏览器就需要重新渲染一次页面,这样的执行性能较差,而且这种形式当我们要修改多个样式时也不方便
box.style.width="200px";
box.style.height="300px";
我们可以通过修改元素的class属性来间接修改样式
box.className="b2"; //将要修改的样式写在class=”b2”、id=”box”的div中,再将box的class修改为b2
box.className+=" b2"; //使box既有b1的样式又有b2的样式,b2前不要忘记写空格
定义一个函数,用来向一个元素中添加指定的class属性。参数1:obj,要添加class属性的元素;参数2:要添加的class值
function addClass(obj,cn){
if(!hasClass(obj,cn)){
obj.className+=" "+cn;
}
}
function hasClass(obj,cn){ //判断一个元素中是否含有指定的class属性值,防止向内添加重复的属性
var reg=new RegExp("\\b"+cn+"\\b");
return reg.test(obj.className); //有b2返回true,没有返回false
}
function removeClass(obj,cn){
var reg=new RegExp("\\b"+cn+"\\b");
obj.className=obj.calssName.replace(reg,"");
}
function toggleClass(obj,cn){ //切换类,如果元素中有则删除,没有则添加
if(hasClass(obj,cn)){
removeClass(obj,cn);
}else{
addClass(obj,cn);
}
}
addClass(box2,"b2"); //添加
removeClass(box,"b2"); //移除
JSON(JavaScript Object Notation JS对象表示法):
JS中的对象只有JS自己认识,其他的语言都不认识。JSON就是一个特殊格式的字符串,这个字符串可以被任意语言识别,并且可以转换为任意语言的对象。JSON在开发中主要用来数据的交互。JSON和JS对象的格式一样,只不过JSON字符串中的属性名必须加双引号,其他的和JS语法一致
JSON分类:
1.对象{ }
var obj='{"name":"孙悟空","age":18}';
2.数组[ ]
var arr='[1,2,3,"hello",true]';
JSON中允许的值:字符串、数值、布尔值、null、对象、数组
将JS字符串转换为JSON对象:
在JS中提供了一个JSON工具类,这个对象可以帮助我们将JSON和JS对象相互转换,但在IE7及以下不支持
json—>js对象:JSON.parse(),用一个JSON字符串作为参数,会将该字符串转换为JS对象并返回
js对象—>json:JSON.stringify(),用一个JS对象作为参数,返回一个JSON字符串
eval(),这个函数可以用来执行一端字符串形式的JS代码,并将执行结果返回。如果使用eval()执行的字符串中含有{},它会将{}当成是代码块,如果不希望将其当做代码块解析,则需要在字符串前后加一个()。此函数功能强大,可以直接执行一个字符串中的JS代码,开发中尽量不要使用,执行性能较差且有安全隐患
var str='{"name":"孙悟空","age":18}';
var obj=eval("("+str+")");
(作者观看的学习视频:B站尚硅谷)