首页 > 解决方案 > Javascript代码没有运行,我该如何解决?

问题描述

当我点击空格然后改变放大镜以倾斜另一个方向时,我的代码应该在计数器上加 1。当我击中空间时,它什么也没做。

我已经解决了我看到的所有问题,但没有任何效果。也许别人知道,我真的不擅长js。

var hits = 0;
var hitElement = document.querySelector( '.hits' );
document.body.onkeydown = function(e) {
  if( e.keyCode == 32 ) {
    addHit();
  }
}

var mag = "";
var hitElement2 = document.querySelector( '.mag' );
document.body.onkeydown = function(f) {
  if( f.keyCode == 32 ) {
    if( mag.text == "") {
        mag = "";
        renderMag();
    else
        mag = "";
        renderMag();
    }
  }
}

var addHit = function() {
  hits++;
  renderHits();
}

var renderMag = function() {
  hitElement2.innerHTML = mag;
}

var renderHits = function() {
  hitElement.innerHTML = hits;
}

var resetHits = function() {
  hits = 0;
  renderHits();
}

控制台也绝对什么也没说。

标签: javascript

解决方案


我修复了一些东西并改变了一些不需要修复的东西。三个关键点:

  • 如前所述,如果有点苛刻的话,兰迪,你的第二个事件监听器覆盖了你的第一个,所以点击率没有增加

  • 第二个事件侦听器的 if 语句中的括号有一些问题

  • 虽然检查 mag 图标可能会起作用,但在代码中使用图标感觉就像要求打破某些东西,所以我将其更改为模检查,以查看命中是奇数还是偶数。

你走在正确的轨道上。当您将来遇到此类问题时,请尝试将控制台日志语句放在代码中的各个位置。预测哪些变量在哪些点应该有什么值,然后检查它们是否有,如果没有,试着找出原因。

var hits = 0;
var hitElement = document.querySelector('.hits');

var mag = "";
var hitElement2 = document.querySelector('.mag');
document.body.onkeydown = function(f) {
  if (f.key == ' ') {
    addHit();
    if (hits % 2 === 0) {
      mag = "";
      renderMag();
    } else {
      mag = "";
      renderMag();
    }
  }
}

function addHit() {
  hits++;
  renderHits();
}

function renderMag() {
  hitElement2.innerHTML = mag;
}



function renderHits() {
  hitElement.innerHTML = hits;
}

function resetHits() {
  hits = 0;
  renderHits();
}
<div class="hits"></div>
<div class="mag"></div>


推荐阅读