javascript - 为什么我的鼠标单击一个 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]+' '+upgrade.description[i]+' ('+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]+' '+upgrade.description[i]+' ('+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();
}
}
}
};
解决方案
推荐阅读
- benchmarking - 如何告诉 Google Benchmark 不对某行代码进行基准测试?
- c++ - 使用 clang++ 在 macOS Catalina 上编译头文件和 cpp 文件的问题
- swiftui - SwiftUI - 协议类型“任何”的值不能符合“视图”
- arrays - Pyspark 数组列 - 用默认值替换空元素
- webstorm - 如何在WebStorm的终端中将光标移动到行首和行尾?
- laravel - Laravel 雄辩的 foreach
- node.js - 运行我的应用程序时如何解决此错误
- php - 如何在我的网站上打开 wss: 或 ws: 端口?
- c# - 当玩家进入房间时执行操作
- php - 需要获取路径不存在的 URL 的最后一部分