for(var i=0;i<100;i++){
if ("A" == MTreeText.tagName) {
if (MTreeCheck[i].parentNode && MTreeCheck[i].parentNode.tagName == "LI") {
AddMyEvent(MTreeCheck[i], 'click', function () {
selectFirst.options.add(new Option(this.innerText, this.getAttribute('treeNodeValue')));
});
}
}
}
问题出在AddMyEvent(MTreeCheck[i], 'click', function () {
selectFirst.options.add(new Option(this.innerText, this.getAttribute('treeNodeValue')));
});
我想象中的this应该是MTreeCheck[i]对象啊,可惜,让我失望了,不是的啊,问题一、如何让this对象指向MTreeCheck[i]对象?问题二、像这样加的事件,如果带入我想要的参数呢,全局参数不可取?
解决方案 »
- 谁用过sencha-touch,能否给一个例子
- javascript初学者,一段代码看不懂……
- js弹出窗口回传值兼容firefox问题
- 求助!韩语字符集的check函数
- jquery jsonp success不执行,error提示parserror
- vml问题:在group中画折线,折线坐标超出了group坐标范围,也能画出来,怎样限制其在group内,超出的部分直接裁掉
- 关于文本框输入的问题
- 用javascript怎么操纵pdf??
- 用JavaScript处理大数,先给20分,解答了给100分。
- 第一次做网站,求解答啊 flask的问题
- 在一个框架中 弹出一个层居中锁屏
- js跨域获取地址栏地址
琢磨一下下面的代码:
apply call (对象冒充)
apply 应用某一对象的一个方法,用另一个对象替换当前对象。
call 调用一个对象的一个方法,以另一个对象替换当前对象。
其它没有太多差别,除了传递参数的不同,下面提供一个例子:
function f(args1, args2){
alert(this.name)
alert(arguments.length)
}
var o1 = {
name : 'lisq'
}
f.apply(o1)var o2 = {
name : 'lufang'
}
f.apply(o2, [1, 2])
f.call(o2, "hello")
return function(){
selectFirst.options.add(new Option(oThis.innerText, oThis.getAttribute('treeNodeValue')));
}
)}(this););//-----------------------------------------------------------------orvar oThis = this;
AddMyEvent(MTreeCheck[i], 'click', function () {
selectFirst.options.add(new Option(oThis.innerText, oThis.getAttribute('treeNodeValue')));
});
我目前正是这样做的,我主要是搞不清这个this居然不同的写法,指向了不同的对象!
if(elem.attachEvent){
elem.attachEvent("on"+type,function(){
fn.apply(elem,arguments);
});
}else{
elem.addEventListener(type,fn,false);
}
}主要是ie6/7下面的ele.onclick=function(){...}这种匿名绑定太不靠谱了,一不小心就循环引用,然后就内存泄漏,少用为妙。
for(var i=0;i<100;i++){
if ("A" == MTreeText.tagName) {
if (MTreeCheck[i].parentNode && MTreeCheck[i].parentNode.tagName == "LI") {
AddMyEvent(MTreeCheck[i], 'click', function () {
var self = this;
selectFirst.options.add(new Option(self.innerText, self.getAttribute('treeNodeValue')));
});
}
}
}
if ("A" == MTreeText.tagName) {
if (MTreeCheck[i].parentNode && MTreeCheck[i].parentNode.tagName == "LI") {
AddMyEvent(MTreeCheck[i], 'click', (function (obj) {
return function(){
selectFirst.options.add(new Option(obj.innerText, obj.getAttribute('treeNodeValue')));
}
})(MTreeCheck[i]));
}
}
}
不好意思,也有几天没来CSDN了,你发的代码,我懂,刚入门的时候就是看的那代码,等下我把帖结了,全部都试试,不懂的再发帖问下,谢谢大家的帮忙!