如何声明count以便它不会在JavaScript中重新声明每次单击?

时间:2011-12-03 10:50:47

标签: javascript

我想在点击时将其替换为“count is odd!”或“算是均匀的” 但我应该如何声明计数,以便它不会重新初始化为每个点击事件1个?

这是我的意思:

    <h1 onclick="var count=1; 
                 if (count%2==1) {
                       this.innerHTML='count is odd!'; count++;}
                 else{     
                 this.innerHTML='count is even';count++;} ">
    Click on this text</h1>

现在发生了什么,你可以看到每次点击都是一个。

2 个答案:

答案 0 :(得分:2)

您可以尝试这一点,counter变量位于onclick闭包范围内,因此它将作为所有onclick事件的全局变量。

var elements = document.getElementsByTagName("h1")
for (var key in elements)
{
    if (elements.hasOwnProperty(key))
    {
        var counter = 1;
        elements[key].onclick = function()
        {
            var oddEven = (counter++ % 2 == 1) ? "odd" : "even";

            elements[key].innerHTML = "count is " + oddEven;
        }
    }
}

注意:您的元素不需要onclick内联代码。

答案 1 :(得分:2)

以这种方式混合标记和javascript非常糟糕。我建议你分开逻辑:

<h1 id="myH">Click on this text</h1>

然后在单独的javascript文件中:

var count = 1;
window.onload = function() {
    var myH = document.getElementById('myH');
    myH.onclick = function() {
        if (count % 2 == 1) {
            myH.innerHTML = 'count is odd!'; 
        } else {
            myH.innerHTML = 'count is even';
        }
        count++;
    };
};