1.var n=parseInt(span.innerHTML)为什么不用Number()转换。
答:parseInt()和parseFloat()是专门将字符串转为数字类型的函数。且parseInt()和parseFloat可自动去掉数字后非数字字符,比如px单位。而Number()无此功能,比较弱。所以,今后,能用parseInt()或parseFloat()都用parseInt()和parseFloat()。
2.if(btn.innerHTML=="+"){
n++;
}else if(n>1){
n--;
}
为什么else if中不写btn.innerHTML=="-"
答:因为if else结构中,如果if条件不满足,则已经隐含了btn.innerHTML不是+,在这个例子中,是有两种情况:btn是+或btn是-,那么只要不是+,就意味着一定是-。所以,else if中不用重复写btn.innerHTML=="-"。
3.DOM对象:用原生js获取的对象
jQuery对象:用jQuery方式获取的对象 以伪数组形式存储 通过$把DOM元素进行包装
DOM对象和jQuery对象的属性和方法不能混用
两者转换:
$(DOM对象)
$('div')[index]
$('div').get(0)
$(是对象时,不用加引号)
4.attribute属性:html中开始标签中写的HTML属性
property属性:内存中,对象上,可用.访问的属性
5.console.dir(a1);//输出对象在内存中的结构
6.
for(var i=0;i<spans.length;i++){
spans[i].οnclick=function(){
for(var i=0;i<spans.length;i++){
spans[i].firstElementChild.className="";
}
this.firstElementChild.className="open";
}
}
7. 凡是返回值为下标的函数,找不到返回-1
凡是返回一个对象或数组的,找不到返回null
凡是返回值为类数组对象,返回的而是空数组对象
没有函数返回undefined
8.<label><input /></label>
9.DOM树----》(css样式)加载树----》(内存排版(布局)引擎)(绘图引擎)
只要DOM树改变,重新排版,绘图
尽量减少对DOM树的操作:
如果添加父元素和子元素,先把子元素加到父元素中,然后再把父元素加载到DOM上
如果父元素已经在页面上了,要添加多个平级子元素。找文档片段对象,先将子元素添加到文档片段,最后再一次性添加到DOM
创建文档片段
var frag=document.createDocumentFragment();
将子元素添加到文档片段中
frag是一个虚拟的父元素
一次性提交,文档片段释放,不会成为页面元素
真实父元素.appendChild(frag)
10.for in 遍历对象中的每个属性
for of遍历数组中的每个对象
for in遍历的是数组的索引(即键名),而for of遍历的是数组元素值。
11.打开和关闭窗口
在当前窗口打开,可后退
html:<a href="" target="_self">
js:window.open("url","_self")
在当前窗口打开,禁止后退
只能用js实现,location.replace(url)
在新窗口打开,可打开多个
html:<a href="" target="_blank">
js:window.open("url","_blank")
在新窗口打开,只能打开一个(覆盖原来)
html:<a href="" target="命名">
js:window.open("url","命名")
原理:在浏览器内存中,每个窗口都有一个name属性
a的target属性就是给窗口命令
预定义的特殊意义的窗口名:_self:自动获得当前窗口的name名给新窗口
_blank:靠浏览器随机生成
12.var index=2;
$("ul li").eq(index).css('color','blue');
$('ul li:eq("+index+")').css('color','blue');