A.我今天学了什么
1.首字母转化
var str = "how are you"
var reg = /(^|\s)(\w)/g
// var s = str.match(reg)
var s = str.replace(reg,function(m,p1,p2){
return p1+p2.toUpperCase();
})
/*
函数参数的规定:
1. 第一个参数为每次匹配的全文本($&)。
2. 中间参数为子表达式匹配字符串,个数不限.( $i (i:1-99))
3. 倒数第二个参数为匹配文本字符串的匹配下标位置。
4. 最后一个参数表示字符串本身。
2.事件委托
<body>
<script type="text/javascript">
/*-------事件委托 (委派)----------
利用事件冒泡在机制,给父级绑定事件,子集也会接收到
1、动态添加 li 也会接受父级d事件
2、循环绑定事件 性能好
var ul = document.getElementById("ul");
var btn = document.getElementById("btn");
//把本来应该给li注册的事件,委托给ul,只需要给一个元素注册事件
//动态创建的li,也会执行预期的效果
ul.addEventListener("click", test, false); //注册点击事件
btn.onclick = function () { //点击同样会有alert
var li = document.createElement("li");
li.innerHTML = "我是新插入的li标签";
ul.appendChild(li);
};
//函数写在注册事件代码之外,提高性能
function test(e) {
alert(e.target.innerText);
}
</script>
*/
<!-- ———————————————— -->
<ul id="ul">
<li>我是第1个li标签</li>
<li>我是第2个li标签</li>
<li>我是第3个li标签</li>
<li>我是第4个li标签</li>
</ul>
<input type="button" value="insertLi" id="btn">
</body>
3.键盘事件
document.onkeydown=function(event){
var e = event || window.event;
// if(e && e.keyCode==27){ // 按 Esc
// //要做的事情
// }
// if(e && e.keyCode==113){ // 按 F2
// //要做的事情
// }
//
// ctrlKey shiftKey altKey 返回true;
//
if(e.ctrlKey && e.keyCode == 13){
alert(1)
}
// if(e && e.keyCode==38){ // enter 键
// alert(1)
// }
//
// alert(e.keyCode)
};
document.onclick = function (){
window.location.hash = "#a1"
}
4.分页
// var str = window.location.search.slice(1);
// var s1 = str.replace(/=/,"\":\"")
// // var s2 ="\"" + s1 + "\"";
// // es6方法 不用字符串拼接 就 `--${变量}----`
// var s2 =`{"${s1}"}`
// // 字符串转为对象
// var obj = JSON.parse(s2)["a"]
var lis = document.getElementsByTagName("li")
var pageSize = 25;
var page = Math.ceil(lis.length/pageSize)
// 页码
for(var i =1;i<=page;i++){
var a = document.createElement("a");
a.innerHTML = i;
a.href = "09-分页.html?a="+i;
document.getElementById("d").appendChild(a)
}
// 获取页码
var PAGE = getPage("a");
// 刚开始 页面中没有 location.search 需要做判断
if(!PAGE){
PAGE = 1;
}
var start = (PAGE-1)*pageSize; //(1-1)10 从0开始
var end = start+pageSize; //(1)10 到10结束
for(var i = start;i<end;i++){
// 做判断
if(lis[i]){
lis[i].className = "show"
}
}
function getPage(PageName){
// 刚开始没有 ? 做判断
if(location.search.indexOf("?")==-1){
return false;
}
// 去除?
var str = window.location.search.slice(1);
// 去除 "=" 替换成 ":"
var s1 = str.replace(/=/,"\":\"")
// var s2 ="\"" + s1 + "\"";
// es6方法 不用字符串拼接 就 `--${变量}----`
var s2 =`{"${s1}"}`
// 字符串转为对象
return JSON.parse(s2)[PageName]
}
5.JSON.parse
/*JSON.parse用于从一个字符串解析出对象,如*/
// var str = '{"ne":"张三"}'
// var obj = JSON.parse(str)
// JSON.parse("[1, 2, 3, 4, ]");
// JSON.parse('{"foo" : 1, }');
/*JSON.stringify()用于从一个对象解析出字符串,如*/
// var obj = {
// "ne":"张三",
// "age":20
// }
// var str = JSON.stringify(obj)
//
// 可以解析 执行 字符串
// eval()