(1)脚本如下:
注释:脚本引入jquery,block2和block1分别为两个div的id名。 var obj={
a:function(){
block1.innerHTML='+++';//成功执行
block1.css('background-color','red')//执行失败,错误提示:Object #<HTMLDivElement> has no method 'css'
}
}; function color(){
var block1=$('#block1');
$('#block2').bind('click',obj.a);
}; color();
(2)问题:
1.js中函数的作用域是在定义时就已经确定,即匿名函数(obj.a)被调用时,在它的作用域链中应该是找不到block1的,当执行block1.innerHTML时应该提示"'block1' is not defined"才对。但是为什么block1.innerHTML却成功执行了?
2.blcok1.innerHTML成功执行是否说明匿名函数(obj.a)的作用域中能找到block1?如果是的话,既然能找到block1,为什么block1不是Jquery对象,却是htmlDivElement对象(即block1.css不能执行)?
注释:脚本引入jquery,block2和block1分别为两个div的id名。 var obj={
a:function(){
block1.innerHTML='+++';//成功执行
block1.css('background-color','red')//执行失败,错误提示:Object #<HTMLDivElement> has no method 'css'
}
}; function color(){
var block1=$('#block1');
$('#block2').bind('click',obj.a);
}; color();
(2)问题:
1.js中函数的作用域是在定义时就已经确定,即匿名函数(obj.a)被调用时,在它的作用域链中应该是找不到block1的,当执行block1.innerHTML时应该提示"'block1' is not defined"才对。但是为什么block1.innerHTML却成功执行了?
2.blcok1.innerHTML成功执行是否说明匿名函数(obj.a)的作用域中能找到block1?如果是的话,既然能找到block1,为什么block1不是Jquery对象,却是htmlDivElement对象(即block1.css不能执行)?
a:function(){
block1.innerHTML='+++';//成功执行
$(block1).css('background-color','red')//执行失败,错误提示:Object #<HTMLDivElement> has no method 'css'
}
};
function color(){
var block1=$('#block1');
$('#block2').bind('click',obj.a);
};
a:function(){
block1.innerHTML='+++';//成功执行,这里的block1并不是color中的block1,这里的就 相当于document.getElementById('block1'),直接用ID名算是一种快捷方式,不过有兼容性问题。
block1.css('background-color','red')//执行失败,错误提示:Object #<HTMLDivElement> has no method 'css'
}
};
function color(){
var block1=$('#block1');
$('#block2').bind('click',obj.a);
};
color();