在Javascript中,我有一个函数,每秒向变量添加1,我想添加一个减去3的函数(通过单击调用)。但是我有(逻辑上)问题,因为变量是由两个函数访问的。 / p>
每秒递增的递归函数就是这个:
function incrementBD()
{
var BD = parseInt(document.getElementById('divBD').innerHTML);
BD = BD+1;
document.getElementById('divBD').innerHTML = BD;
setTimeout('incrementBD()',1000);
}
减去3的函数就是这个
function less3()
{
var BD = parseInt(document.getElementById('divBD').innerHTML);
BD = BD-3;
document.getElementById('divBD').innerHTML = BD;
}
现在,我的变量存储在一个我可以直接在Javascript中工作。
但是我该如何处理多重访问问题呢?
谢谢你的帮助! =)
编辑:我创建了(如建议的)全局变量。当我点击它时按预期减去3,但每次尝试时变量都会返回1。
var BD;
function incrementBD()
{
BD = parseInt(document.getElementById('divBD').innerHTML);
BD = BD+1;
document.getElementById('divBD').innerHTML = BD;
setTimeout('incrementBD()',1000);
}
function less3()
{
BD = parseInt(document.getElementById('divBD').innerHTML);
BD = BD-3;
document.getElementById('divBD').innerHTML = BD;
}
编辑2由于此代码似乎适用于其他人,这里是我的HTML页面
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//FR" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<head>
<title>Index</title>
<script src="fonctions.js"></script>
</head>
<body onload="incrementBD()">
<div id="content">
Broken Dreams : <span id="divBD">0</span>
</div>
<a href="" onclick="less3()">Minus 3</a>
</body>
</html>
答案 0 :(得分:1)
问题不在于变量,而在于链接:
<a href="" onclick="less3()">Minus 3</a>
每次点击它时,它都会执行链接操作,并导航到""
,重新加载当前页面。
要防止这种情况,请从onclick处理程序返回false
以防止&lt; a&gt;的默认操作。标记:
<a href="" onclick="less3();return false;">Minus 3</a>
或者,使用按钮:
<button onclick="less3()">Minus 3</button>
答案 1 :(得分:0)
您应该考虑范围,以确定您的选择。您可以使用全局变量来实现此目的:
var BD = 0; //global var
function incrementBD()
{
BD = BD+1; //uses global var (not the html value)
document.getElementById('divBD').innerHTML = BD; //"prints" the result to the html
setTimeout('incrementBD()',1000);
}
function less3()
{
BD = BD-3; //use the same global value
document.getElementById('divBD').innerHTML = BD; //"print" it again
}