1.document也是dom节点。直接appendChild,但直接给document加节点没啥意义,1般都是document.body.appendChild或document.getElementsByTagName("head")[0].appendChild
2.这是函数闭包的问题,同1个函数中的变量都是同1个作用域的,onclick引用的是同1个作用域下的同1个变量。
3.用bind方法,bind算是1个8成标准的函数了,很多框架都提供了bind。1般的实现:
function bind(o, f, p){
return function (){
return f.apply(o, p);
}
}
ele.onclick = bind(this_obj, function (){..}, [param1, param2, ...]);
2.这是函数闭包的问题,同1个函数中的变量都是同1个作用域的,onclick引用的是同1个作用域下的同1个变量。
3.用bind方法,bind算是1个8成标准的函数了,很多框架都提供了bind。1般的实现:
function bind(o, f, p){
return function (){
return f.apply(o, p);
}
}
ele.onclick = bind(this_obj, function (){..}, [param1, param2, ...]);
2. btn.onclick=function(){alert(i);};无法把参数传进去
3. 使用call,apply函数。或者使用prototype.j中的bindAsEventListener方法
由于这个是引用值
就是alert出i的值(而不是想当然的1 2 3 4)
所以for完之后i的值是多少alert出来的值就是多少
小弟看不懂啊,这是哪种写法?n和i,看起来没关系啊
btn.onclick=aa(i);function aa(n){return function(){alert(n)}}这样应该比较好理解
for(var i=0; i<5;i++){
var con = document.getElementById('con');
var btn=document.createElement('button');
btn.setAttribute("index", i);
btn.onclick=function(e){alert(e.srcElement.getAttribute("index"));};
btn.appendChild(document.createTextNode(i));
con.appendChild(btn);
}
}