我先在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);
});
当然还有更多的写法,基于效率。不过这都是后话,题主可以循序渐进。加油
1 回答858 阅读✓ 已解决
1 回答1.1k 阅读
2 回答774 阅读
2 回答622 阅读
2 回答607 阅读
1 回答682 阅读
2 回答529 阅读
我感觉这样会比较好点,将全局变量window传进去比较好点: