我有一个输入,当我点击时 - 我想看到'1,2,3,4 ......'的警报(每次按下)
<input type='button' value='press' onclick='Clicked();' />
<script>
var t
function Clicked()
{
t=func;
t();
}
function func()
{
var count=0;
return new function () // <=== new or not new ???
{
count++;
alert(count);
}
}
</script>
If im adding the 'new' in the return and click , it says : '1,1,1,1,...'
如果我删除'新'它不起作用......
我的目标是使用它来获得:'1,2,3,4 ......'
有人可以向我解释会发生什么吗?
答案 0 :(得分:2)
您需要使用返回的函数:
var t = func()
function Clicked() {
t();
}
function func() {
var count=0;
return function () {
count++;
alert(count);
}
}
答案 1 :(得分:1)
您必须将count声明放在“func”函数之外并放入全局命名空间。像这样:
var count=0;
function func() {
count++;
alert(count);
}
答案 2 :(得分:1)
每次clickevent触发时你都会创建一个新的var计数。你应该将var count = 0放在函数外部作为全局变量..
哦,顺便说一句,请退出返回的东西,这将正常工作:
var count = 0;
function func()
{
count++;
alert(count);
}
并调用此方法:func();
答案 3 :(得分:1)
您收到1,1,1,1
,因为您每次拨打func()
时都会重新定义计数。
在您的情况下,您需要将count变量放在全局范围内:
var t;
var count = 0;
或改变你做事的方式:
var t = 0;
function Clicked(){
t = func(t);
}
function func(count){
count++;
alert(count)
return count;
}
我个人喜欢第二个。你有更少的全局变量,少一个函数声明,它更清晰
答案 4 :(得分:1)
var t
function Clicked()
{
t=func;
t();
}
var count=0;
function func()
{
return new function () // <=== new or not new ???
{
count++;
alert(count);
}
}