在Javascript中理解这段代码

时间:2016-09-14 00:13:46

标签: javascript javascript-events

我希望下面的代码在每次触发事件时递增变量if(_.isEmpty(_.compact(_.values(pref)))) {alert} else {run the program};,即按下向下键时,但不会。代码只递增一次,即使按下向下键也没有任何反应。

你能解释一下为什么会这样吗?

当事件触发时,firefox的标签还会显示加载圈,为什么会这样? 此外,事件监听器是否存在生命周期,即它何时到达?

counter

2 个答案:

答案 0 :(得分:1)

document.write()实际上会覆盖页面的所有当前内容,因此您的代码只会运行一次,之后您的HTML代码将只包含一个字符“1”。这意味着您的DOM将被销毁,并且不再需要运行JavaScript代码。

您可能想要做的是更新特定元素的内容,而不是覆盖所有文档。

答案 1 :(得分:1)

Lukas正确描述了问题,您的示例的以下修改版本包含< div>写入并更改事件侦听器以写入标记而不是覆盖DOM。



<html>
<head>
<body>
<script>
  var counter=0;
  addEventListener("keydown",function(){
    counter++;
    document.getElementById("target").innerHTML = counter;
  });
</script>
<div id="target"></div>
</body>
</html>
&#13;
&#13;
&#13;