首页 > 解决方案 > 为什么我的鼠标单击一个 onclick 事件,而不是另一个

问题描述

所以在我制作的游戏中,onclick 事件没有按预期工作。出于某种原因,这行代码 onclick=upgrade.purchase('+i+') 鼠标垫在我单击时起作用,但是当我使用鼠标时它什么也没做。我有另一行几乎相同的代码, onclick=achievement.disappear('+i+')当我使用鼠标时它消失了(这是预期的效果)。它与鼠标垫完美配合。IDK 为什么它如此不一致。我可能也应该给你整个功能。

updateUpgrades: function () {
    document.getElementById("upgradeContainer").innerHTML = " ";
    for (var i = 0; i < upgrade.name.length; i++) {
      if (!upgrade.purchased[i]) {
        if (upgrade.type[i] == "building" && building.count[upgrade.buildingIndex[i]] >= upgrade.requirement[i]) {
          document.getElementById("upgradeContainer").innerHTML += '<img src="'+upgrade.image[i]+'" title="'+upgrade.name[i]+' &#10;'+upgrade.description[i]+'&#10;('+upgrade.cost[i]+' bitcoin)" onclick=upgrade.purchase('+i+')>';

        } else if (upgrade.type[i] == "click" && game.totalClicks >= upgrade.requirement[index]){
               document.getElementById("upgradeContainer").innerHTML += '<img src="'+upgrade.image[i]+'" title="'+upgrade.name[i]+' &#10;'+upgrade.description[i]+' &#10;('+upgrade.cost[i]+' bitcoin)" onclick=upgrade.purchase('+i+')>';
        } 
      }
    }
  },

顺便说一句,它在一个对象中。我也有使用 HTML 的经验,但我的知识不是很好,所以请多多包涵,哈哈。使该功能正常工作的其他事项

let upgrade = {
  name: [
    "Better Picks",
    "Better GPUs",
    "Bigger Warehouses",
    "Faster PCs",
    "goldPicks"
  ],
  description: [
    "Picks mine twice the amount of bitcoin",
    "Miners mine twice the amount of bitcoin",
    "Warehouses mine twice the amount of bitcoin",
    "Hackers mine twice the amount of bitcoin",
    "Picks mine three times the amount of bitcoin"
  ],
  image: [
    "goldPickaxe.png",
    "gpu.png",
    "MiningWarehouse.jpeg",
    "Hacker.jpg",
    "goldPickaxe.png"

  ],
  type: [
    "building",
    "building",
    "building",
    "building",
    "building"
  ],
  cost: [
    100,
    500,
    1000,
    5000,
    10000
  ],
  buildingIndex: [
    0,
    1,
    2,
    3,
    0
  ],
  requirement: [
    5,
    10,
    15,
    20,
    30
  ],
  bonus: [
    2,
    2,
    2,
    2,
    3
  ],
  purchased: [
  false,
  false,
  false,
  false,
  false
  ],

  purchase: function (index) {
    if (!this.purchased[index] && game.score >= this.cost[index]) {
      if (this.type[index] == "building" && building.count[this.buildingIndex[index]] >= this.requirement[index]) {
        game.score -= this.cost[index];
        building.income[this.buildingIndex[index]] *= this.bonus[index];
        this.purchased[index] = true;

        display.updateUpgrades();
        display.updateScore();

      } else if (this.type[index] == "click" && game.totalClicks >= this.requirement[index]) {
        game.score -= this.cost[index];
        game.clickValue *= this.bonus[index];
        this.purchased[index] = true;

        display.updateUpgrades();
        display.updateScore();
      }
    }
  }
};


标签: javascripthtml

解决方案


推荐阅读