零散总结:
1 .高级程序设计:
1.Typeof.显示数据类型。
例: alert(typeof 5); //number
String字符串 number 数值 Boolean 布尔值
Undefined未定义的值 function 函数
Object 对象
2.undefined
声明了变量后,进行初始化才会让变量结果为undefined,如果没有声明,只有在使用typeof的情况下,可以看到变量的类型为undefined。
3.null值是一个空对象指针,所以对null使用typeof会返回一个‘object’,表示是一个对象。如果定义变量在未来准备保存什么值,最好将变量初始化为null
4.布尔值转化。 例如传入数值, var Boolean1=Boolean(1); 返回true,如果是0,返回false。同样用于对象的时候,对象为null返回false;
例子: var message=“hellow world”;
If(message){
Alert(‘value is true’)
}
最常见的布尔值转换,如果有这个变量,或者其他用法,有这样一个用法,则会执行相印的操作。
5.因为浮点数的精确性为题,0.1+0.2的值的结果回事0.300000000000004,精确到17位,明显数值不正确,所以永远不要测试某个特定的浮点数值。
6.数值转换。主要涉及三个方法。Number()。常规的将括号内的转化为数值,如果是没有意义的内容则会转化为NAN,,空的字符串转化为0;
Parseint() 忽略字符串前面的空格,如果第一个字符串不是负号或者数字字符,那么就会返回NaN。会一直解析到非数字字符。因为小数点不是数字字符,所以不会返回小数。可以增加一个说明解析目标的类型的数字。
parseFloat和parseInt类似,会解析到一个无效的浮点数字为止。例如22.4.2会被解析为22.4、因为第二个小数点是无效的了。
7.在看到加减操作符的用法时想到,如果要做一些判断的函数,多个条件的情况下,如果不用特殊判断符号,使用转化为number()一类的方法检验字符,数据是否存在,再进行加减操作,例如NaN加任何操作数的结果都是NaN,可以说明,两个数据相加,其中有一个不是数值。
8.字符串和数值出现在加法中的时候,效果是将字符串和数值拼接起来,例如“sum of a and b”+a+b 的结果是 “sum of a and b ab” ;只有加上括号才会将字符串和数值的运算分开。
注意:null会转化为0,true会转化为1.
9.大小符号。 字符串比较会首字母的字符编码大小,
10.条件操作符,有boolean用法,boolean_expression?ture_value:false_value;
If(a>b)?a:b;
11.逗号操作符一般被用于同时给多个变量赋值。
12.do-while的用法主要是函数内容至少会被执行一次,先do后while。
13.js可以使用方括号来表示访问对象的属性,在使用方括号的时候应该注意,要将属性以字符串的形式放在方括号中。例如: alert(object[“id”]);
14.要访问函数的指针而不执行函数的话,必须去掉函数名后面的那对圆括号。
15.Arguments主要做用时保存函数参数,他有一个属性,callee,该属性是一个指针,指向拥有这个arguments对象的函数。
二:DOM编程艺术
1.相对于在<head></head>中添加<script>标签来存放javaScript和引用.js文件在文档的头部放<script>标签引用javaScript这两种方法而言,更好的方法是:
在上述两种方法加在HTML文档最后,</body>标签之前。 这样能使浏览器快速的加载页面.
2.charset标签属性规定在外部脚本文件中使用的字符编码。或者文档中使用的字符编码。 -------charset="UTF-8";
3.“<!-”的效果和//的单行注释效果一样。不需要结尾。
4.再记忆一次,变量名只用用 _ 或者美元符号$或者英语字母来开头,第一个字母不允许使用数字。内容可以包含字母,数字,美元符号和下划线。下划线可以让比较长的变量名更容易阅读(长的变量名里每个新单词的首字母用大写也可以达到同样的效果如:var firstClass='hapyy' //happy是字面量)。
* 一个好的习惯:命名变量时,我们才用在不同单词之间加下划线的方式,命名函数时,我们才用第二个单词首字母大写的形式进行区分。
5.严格比较“===”,除了比较值以外还会比较变量的类型。
6.var 可以保证在函数内做局部变量时不受全局同名变量的影响。
7.谨记:getElementByID()中为元素的id属性值,必须放在单引号或者双引号之间。!!返回的是一个对象,如果用alert弹出的话会显示一个object;每个节点都是一个对象。
8.getElementsByTagName返回的是数组!哪怕只有一个指定属性的元素,返回的也是数组!
*- getElementById和getElementsByTagName可以组合使用:
var pp=document.getElementById("qq");
var ww=pp.getElementsByTagName("*"); //参数是标签的名字
9.getElementsByClassName()可以同时查找带有多个类名的元素,只要在()中用空格分开就可以啦。 (class1 class2);
9.1. 获取和设置属性。 getAttribute
object.getAttribute(attribute) // 参数是打算查询的属性名字。
var title-text=span.getAttribute("title")。
变量 目标元素 属性名
设置属性:setAttribute :
var shopping=document.getElementById("purchases");
shopping.setAttribute("title","a list of goods");
10.if(something)和if(something!=null)完全等价,
判断写法更加简单:if(somethig)alert(XXX)
11.尽量少的访问DOM和尽量减少标记!
if(document.getElementById("").length>0){
var links=document.getElementById("");
for(){}}
两次使用DOM访问了其中的元素,浏览器会搜索整个DOM树,从而查找可能匹配的元素,浪费了一次搜索。 更好的方式是:
var links=document.getElementById("");
if(link.length>0)....
*当要获取多个种类的元素节点时,为了解决访问次数过多的问题,应当考虑到设置参数,进行传参的形式。
12.注意合并放置脚本,多个脚本放在一个js文件中一起做引用。
13。压缩脚本,删除不必要的字节和注释,工作者可以准备两个版本,一个工作副本和一个精简版本。区分开来,方便修改注释和实际工作。
14.DOM方法添加标签。 创建元素节点。
CreateElement: var para=document.createElement(nodeName).
var testdiv= doucument.getElementById(" ")
testdiv.appendChild(para); // 为变量插入标签
等同于: document.getElementById("").appendChild(document.createElement("nodeName").
15.createTextNode方法,创造文本节点。
var txt=document.createTextNode(text);
16.在已有元素前插入一个新的兄弟元素:insertBefore(方法)。
parentElement.insertBefore(newElement,targetElement)。
父元素 方法 新元素 目标元素
无需知道父元素到底是谁,因为用了目标元素的parent属性。
17。在已有元素之后插入一个新的兄弟元素。 DOM没有提供insertAfter()方法,但是我们可以自己创建一个这样的方法。
fuction insertAfter(newElment,targetElement){
var parent=targetElement.parentNode;
if(parent.lastChild==targetElement){
parent.appendChild(newElement;
}else{
parent.insertBefore(newElement,targetElement.nextSibling);
}
}
18.创建动态标记的设计思路初体验:
<script>
document.write("<p>this is inserted.</P>");
</script>
凌乱的笔记:
1.如果想让双引号或者单引号在代码里表达正常的使用方法,可以用反斜杠,
放在引号前来包裹要操作的单引号和双引号。
2."This string has "double quotes" in it"
当我们需要在字符串中使用与开头结尾相同的引号时,我们需要对引号进行 转
义 。如果你有很多双引号的字符串,使用转义字符可能导致难以阅读。这时候
可以使用单引号。
'This string has "double quotes" in it. And "probably" lots of them.'
4. case "a": answer="apple"; break;
注意case值为字符串的时候要加双引号。
多个case可以一起执行相同的函数。
case 1:
case 2:
case 3: result="xx";
break;
5.用[]引用的时候要注意,属性如果是字符串,应该加上引号。一般用于引用的
属性带有空格的时候
中括号操作符的另一个使用方式是用变量来访问一个属性。当你需要遍
历对象的属性列表或查表时,这种方式极为有用。
这有一个使用变量来访问属性的例子:
var someProp = "propName";
var myObj = {
propName: "Some Value"
}
myObj[someProp]; // "Some Value"
当我们通过变量名访问属性的时候,不需要给变量名包裹引号。因为实际上我们
使用的是变量的值,而不是变量的名称。
中括号运算符总是能代替点运算符。但点运算符却不一定能全部代替中括号运算
符。
中括号运算符可以用字符串变量的内容作为属性名。点运算符不能。
中括号运算符可以用纯数字为属性名。点运算符不能。
中括号运算符可以用js的关键字和保留字作为属性名。点运算符不能
6.json 在访问json对象的值的时候,遇到带空格的情况采用[]。逐级用 . 来
访问目标值。
1.CSS3 border-radius
给div元素添加圆角边框:
div
{
border:2px solid;
border-radius:25px;
}
2.利用父元素高度不设置,子元素的padding-top属性,将内容撑开。这时虽然元素高度不变,但是视觉效果是高度自适应了。
padding-top=width。或者成比例
3.当margin设置成百分数的时候,其top right bottom left的值是参照父元素盒子的宽度进行计算,在w3c的规范中也是这样描述的: margin 的百分比值参照其包含块的宽度进行计算,同样的padding如果设置成百分数的话,其盒子模型和margin是一样的。
4.background-position百分比计算公式:
background-postion:x y;
x:{容器(container)的宽度—背景图片的宽度}*x百分比,超出的部分隐藏。
y:{容器(container)的高度—背景图片的高度}*y百分比,超出的部分隐藏。
如果您仅规定了一个关键词,那么第二个值将是"center"。
默认值:0% 0%。
5.background-repeat:no-repeat; 背景图片不要重复铺盖。