从onclick回调调用时,console.log没有显示[javascript]

时间:2018-06-17 08:14:46

标签: javascript events console.log

说我有这样的功能:

var some_value = 0
function refresh(something)
{
    // Log our value
    console.log(some_value);

    // If this function was invoked by clicking our some_div created below, set some_value
    if(last.getAttribute("baby"))
    {
        some_value = 1;
    }

    // Create some div, give it a random attribute and add an onclick event
    some_div.setAttribute("baby");
    some_div.addEventListener("click", function(){refresh(this);}, false);

    // Log our some_value
    console.log(some_value);
}

// Call our function
refresh(null)

我希望控制台看起来像这样:

//refresh(null)
0
0

//clicked our some_div
0
1

相反,如果看起来像这样:

//refresh(null)
0
0

//clicked our some_div
1
1

我的some_value何时被设置?这让我发疯。我真的很感激一些帮助...

1 个答案:

答案 0 :(得分:0)

var some_value = 0 只执行一次,因为它在函数外部。第一次单击div后,some_value设置为1。 您可能不小心点击了它。 下次通过单击div调用refresh()时,some_value的值先前已设置为1。然后结果将是

1
1

要获得所需的结果,请将some_value设置为刷新内的局部变量。

function refresh(something)
{
var some_value = 0 #value is initialised every time
.
.
.
}

会给出

0
1

每次点击div。