事宜托付
ul#wrap>li.item$*2>{item $}
获得以下
html
<ul id="wrap"> <li class="item1">item 1</li> <li class="item2">item 2</li> </ul>
一个监听,多个函数绑定
js
document.getElementById('wrap').addEventListener("click", function(e) { if (e.target.nodeName === "LI") { console.log("ok"); switch(e.target.className){ case "item1": f1(); break; case "item2": f2(); break; default: alert("not a li node"); } }; },false) function f1(){ alert("f1"); } function f2(){ alert("f2"); }
JSONP
标签的src属性并不被同源战略(同协定、域名、端口)所束缚,所以能够猎取任何服务器上剧本并实行。ajax的中心是经由过程XmlHttpRequest猎取非本页内容,而jsonp的中心则是动态增加
<script>
标签来挪用服务器供应的js剧本。
以上是网上摘抄,依据本身的明白写下以下代码
js
//jsonp.html function getName(data){ console.log(data.name); } var scriptP = document.createElement("script"); scriptP.src = "http://localhost:8000/reponse.php?id=1&&callback=getName"; window.onload=function(){ document.body.appendChild(scriptP); }
php文件以下
php
//reponse.php <?php $getId = $_GET["id"]; $getCalFun = $_GET["callback"]; $json = array( "id" => $getId, "name" => "zhangsan" ); echo $getCalFun+'('+json_encode($json)+')'; ?>
但却报错了Uncaught SyntaxError: Unexpected token <
,不知道那里出错了,往大婶指出…
道理很简朴,客户端猎取数据依据需求动态增加script,并使jsonp的服务端拼接剧本触发函数。
This
js
var ob = {}; ob.x = 1; ob.f = function(){ this.x = 2; } ob.f(); console.log(ob.x); // => 2
从上面的代码能够得知,this是援用对象,而且是能够变动指定的对象。
重要运用有两种call和apply
js
function change(s,v){ if(s > v){ console.log("s >v"); }else{ console.log(" s < v"); } } change.call(2,3);// 当前this 指向window ... function changeColor(s,v){ this.style.s = v; } var box = document.querySelector(".box"); changeColor.call(box, "backgroundcolor" , "blue"); //当前this指向changeColor
call和apply的区分只是apply只接收两个参数,第二个参数是数组情势。
疑问:
js
var obj = { x : 100, y : function(){ setTimeout( function(){ alert(this.x); } //这里的this指向的是window对象,并非我们期待的obj,所以会弹出undefined , 2000); } }; obj.y();
上面是刚开始碰到的疑问
厥后经指导,一段代码明白题目
js
window.setTimeout();
解决方法:
...
y.function(){
var that = this;
setTimeout(
function(){
alert(that.y); //既然setTimeout指向的是window,我们把它换了就ok
}
,2000)
}
...
以上代码摘自: http://www.cnblogs.com/rainman/archive/2009/05/03/1448392.html
前端模块化的AMD和CMD
网上已经有许多关于这方面的对照。我只写一下我的明白。
AMD:加载速度快,它是异步加载,预先加载一切资本(这也是瑕玷?)。
CMD:服务器端模块的范例,同步加载,加载完后才实行背面的操纵。
AMD平常适用于浏览器,CMD则适用于当地或许服务器,比方nodejs就是采纳这类模块化(npm)。
圣杯规划
首次据说这个,厥后网上一搜,本来也就那末一回事
如果是我的话,我会采纳flex了。
Cache-Control
这个只是简朴相识,没做深切,好的博客引荐看这里
http://www.cnblogs.com/TankXiao/archive/2012/11/28/2793365.html
重要相识了 HTTP状况码
- 1XX示意要求接收胜利,待进一步处置惩罚
- 2XX示意接见胜利
- 3XX 接见重定向
- 4XX 客户端要求毛病,包含语法、文件途径
- 5XX 服务器涌现毛病
罕见的有
200接见胜利,302 接见重定向(google.com转到google.com.hk),304缓存,404页面不存在。
我记不住的:
400 Bad Request,要求涌现语法毛病。
403 Forbidden,服务器拒绝要求。
500 服务器发生了不可预知的毛病
503 服务器当前没法接收要求,请守候一段时候
304
关于304缓存,重要有两个标识推断是不是需求要求新的文件:
- Etag
- 缓存文件的时候和服务器文件末了一次修正的时候
Cache-Control
Cache-Control罕见的参数:
- public 一切用户都可运用(缓存在服务器上)
- private 单个用户专用
- no-cache 一切页面都不能缓存
- max-age 若干时候不会去接见服务器
参数能够参考: http://fanli7.net/a/bianchengyuyan/C__/20130120/294176.html
JavaScript继续完成
能够直接看阮一峰先生的文章
http://www.ruanyifeng.com/blog/2011/06/designing_ideas_of_inheritance_…
未写:
- 继续有好几种体式格局(待写一个YUI继续体式格局)
- 拖拽完成
- JavaScript基本算法
- Javascript动画算法