1 比较时尽量使用===,这样比较时会连类型一起比较,避免类型不同时奇怪的比较结果
2 function(参数列表){函数体},函数体中的都有一个arguments的参数,可以用arguments.length参数判断函数传入了几个参数
3 var修饰的变量表示它是函数级变量,没有var修饰的变量是全局变量,这些变量被绑定在全局变量windows上,而let修饰的变量是区域级的变量
4 对于array的sort方法可以传递一个函数作为参数,参数的入参一定是两个,指明排序的比较方法
5 类似的,集合的map方法,reduce方法和filter方法都可以使用函数做入参,map方法表示对集合的每个元素都用传入的方法改变,reduce表示对每个元素都用传入的方法做运算,在用结果和下一个元素做运算,filter表示如果不返回true的元素会被过滤掉
6 Date默认可以返回浏览器从系统获取的时间,但是var date = new Date(); date.getMonth()获取到的时间是从0开始计算的,也就是说0表示1月,11表示12月...
7 json 的序列化:JSON.stringify(obj),可以将对象转换成json
json的反序列化:JSON.parse(js)将json反序列化成js对象
操作dom对象:一般获取dom对象是先通过getElementById获取到根节点,在通过getElementsByTagName()和getElementsByClassName获取到需要的元素集
eg)
// 获取<p>javascript</p>节点:
var js = document.getElementById("test-js");
// 修改文本为JavaScript:
js.innerHTML="JavaScript";
// 修改CSS为: color: #ff0000, font-weight: bold
js.style.color = "red";
js.style.fontWeight = "bold"
8 动态添加标签
在list的末尾添加p标签
var list = document.getElementById('list'),
var haskell = document.createElement('p');
haskell.innerText = 'Haskell';
list.appendChild(haskell);
获取的list元素还有insertbefore的方法,能将新建的标签插入到list的任意标签前面,children[i]方法可以获取其第i个元素
9 拿到指定id的标签后删除它
var self = document.getElementById('to-be-removed');
// 拿到父节点:
var parent = self.parentElement;
// 删除:
var removed = parent.removeChild(self);
10 设置密码密文提交的方式
一般在网络上传输密码的时候,我们希望密码域能够密文传输,单数将密码域的value做加密会导致密码域的位数突然变化,这种情况,一般不设置密码域的name,这样表单不会传输这一项,而使用一个隐藏的表单项提交加密后的密码
eg)
<form id="login-form" method="post" onsubmit="return checkForm()">
<input type="text" id="username" name="username">
<input type="password" id="password" name="password">
<button type="submit">Submit</button>
</form>
<script>
function checkForm() {
var pwd = document.getElementById('password');
// 把用户输入的明文变为MD5:
pwd.value = toMD5(pwd.value);
// 继续下一步:
return true;
}
</script>