我試圖設置一個內部計數器,每當用戶點擊一個觸發onclick函數的鏈接時,就會加1。它從0開始,每當用戶點擊鏈接時,計數器將增加1(或任何你想要的整數)。在刷新時計數器應該重置爲0,並且保存整數值的變量不能在全局範圍內聲明。JS:沒有在全局範圍內設置計數器變量的增量計數器?
我一直運行到如何初始聲明變量的catch22中,而不必在每次函數運行時重複該聲明,本質上將計數器值設置回原始值。
我試圖設置一個內部計數器,每當用戶點擊一個觸發onclick函數的鏈接時,就會加1。它從0開始,每當用戶點擊鏈接時,計數器將增加1(或任何你想要的整數)。在刷新時計數器應該重置爲0,並且保存整數值的變量不能在全局範圍內聲明。JS:沒有在全局範圍內設置計數器變量的增量計數器?
我一直運行到如何初始聲明變量的catch22中,而不必在每次函數運行時重複該聲明,本質上將計數器值設置回原始值。
我不知道這是你以後,但這裏有你想要做什麼的2種方式:
// method 1: use a private scope
var click_handler = (function() {
var counter = 0; // this is not in global scope!
return function() {
counter++;
};
})();
// method 2: use a function property
function click_handler() {
click_handler.counter++;
}
click_handler.counter = 0;
封閉(第一個例子)是首選。將函數作爲僞全局變量添加屬性可能不是一個好主意。 – RobG 2015-02-07 05:13:24
像這樣的事情?這裏的計數器是一個局部變量,onclick函數的定義與計數器變量的作用域相同。也每次刷新計數器將被重置爲0.
<html>
<head>
<title>Link Counter</title>
<script type="text/javascript">
window.onload = init
function init() {
var counter = 0
var link = document.getElementById("link")
var display = document.getElementById("display")
function increase_counter() {
counter++
display.innerHTML = counter
return false
}
link.onclick = increase_counter
}
</script>
</head>
<body>
<a href="" id="link">Click Here </a>
<p id="display">0 </p>
</body>
</html>
爲什麼變量不能全局聲明? – MFazio23 2015-02-07 04:53:03
顯示你的一些代碼可能會有所幫助... – qtgye 2015-02-07 04:54:25