我先在html中调用自执行函数内部的方法,怎么办? 例如:
<div onclick="foo()"></div>
<script>
(function(){
function foo(){
alert('xx');
}
}()
</script>
我先在html中调用自执行函数内部的方法,怎么办? 例如:
<div onclick="foo()"></div>
<script>
(function(){
function foo(){
alert('xx');
}
}()
</script>
我去。。题主,你确定要采纳你现在采纳的那个答案么??
我先给你分析一下我的见解:
<div onclick="foo()"></div>
<script>
(function(){
foo = function (){
alert('xx');
}
}()
</script>
这种方式意思是(按运行先后顺序):
创建了一个函数对象
声明了一个全局的函数:foo
将foo
指向之前创建的函数对象
我先说的意思是,这时的foo
是全局指针,也就是说,对全局环境有污染。试想你的页面不会只有这一个element
有个事件吧?而且按编程思想也不应该把元素的点击事件做成全局的,做成全局的应该是common
级别的东西。
他的第二个方案其实也是一回事,只不过把闭包去掉了而已。
===========================================================
我觉得,而且也是主流的做法是:
<div id='abc'></div>
document.getElementById('abc').onclick = function() {alert('xx');};
当然,我更偏向于使用比较成熟的脚本库(比如jQuery):
$('#abc').click(function() {
alert(xx);
});
当然还有更多的写法,基于效率。不过这都是后话,题主可以循序渐进。加油
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
我感觉这样会比较好点,将全局变量window传进去比较好点: