Javascript 单击计数功能不工作?

Javascript 单击计数功能不工作?,javascript,html,Javascript,Html,我想按用户计算每次鼠标点击次数,所以我创建了一个函数,但它只计算第一次点击次数。我创建一个变量来存储计数值 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m

我想按用户计算每次鼠标点击次数,所以我创建了一个函数,但它只计算第一次点击次数。我创建一个变量来存储计数值

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>clicks</title>

<script type="text/javascript">



function clickcount (){

var clicks=0;   
    document.getElementById('count').value= ++clicks;


    }

document.onclick=clickcount;
</script>


</head>

<body>

<input type="text" id="count" />
</body>
</html>

咔哒声
函数clickcount(){
var=0;
document.getElementById('count')。value=++单击;
}
document.onclick=点击计数;

这是因为您在函数内部声明了
var单击。每次调用时,它都会被0覆盖。在函数范围之外声明它

var clicks = 0;
function clickcount (){
    document.getElementById('count').value= ++clicks;
}

var
关键字初始化变量。JavaScript将在更窄的函数范围内提供在更宽范围内定义的变量。因此,在函数外部调用
var clicks=0
会将
clicks
置于全局(
窗口
对象)范围。

这是因为您在函数内部声明了
var clicks
。每次调用时,它都会被0覆盖。在函数范围之外声明它

var clicks = 0;
function clickcount (){
    document.getElementById('count').value= ++clicks;
}

var
关键字初始化变量。JavaScript将在更窄的函数范围内提供在更宽范围内定义的变量。因此,在函数外部调用
var clicks=0
会将
clicks
置于全局(
窗口
对象)范围。

您需要使
clicks
全局,以便函数继续增加相同的变量

var clicks=0;
function clickcount (){

    document.getElementById('count').value= ++clicks;

}

您需要将
单击设置为全局,以便函数继续递增相同的变量

var clicks=0;
function clickcount (){

    document.getElementById('count').value= ++clicks;

}

为了避免污染全局命名空间,您可以将代码包装在匿名函数中,并将您的单击存储在:


为了避免污染全局命名空间,您可以将代码包装在匿名函数中,并将您的单击存储在:


现在我知道了,如果我把变量从函数中去掉,那么它会增加它的值。现在我的问题是为什么我们需要把变量放到函数外面,现在我得到了,如果我把变量放到函数外面,它会增加它的值。现在我的问题是,为什么我们需要将变量置于函数+1之外,但可能应该使用load事件来附加侦听器,并检查
document.getElementById(“count”)
在分配给元素的value属性之前返回一个元素。@RobG感谢您的建议,我已经添加了onload.+1,但可能应该使用load事件附加侦听器,并检查
document.getElementById(“count”)
在分配给元素的value属性之前是否返回元素。@RobG感谢您的建议,我已经添加了onload。