如何根据单击对象的id调整变量
How to adjust a variable based on the id of the object that is clicked?
我正在为我的HTML游戏制作一个商店系统,我想制作它,这样当你点击一个项目时,它就会获得id,并将该项目的变量降低1。
if(e.shiftKey && inShop[this.id] === 0) {
coins = coins+price[this.id]
coinUpdate();
[this.id]--;
}
var fish1 = 1
<html>
<img class="item cookable" id="fish1" src="source">
</html>
例如,当我点击一条鱼时,我希望它降低你库存中有多少条鱼的变量。因此,我需要更改一个同名变量中的[this.id]
。
不要使用window
方法。它仅适用于global
变量。
全局变量被定义为some_var = 10;
,而不是var some_var = 10;
。如果你是桌面编程背景,你会发现JS中的全局变量很尴尬。
相反,使用名称空间或对象(此方法)。
这样定义你的库存:
var inventory = {
goldfish: 10,
seahorse: 10,
jellyfish: 10
}
对于HTML,ID方法是可以的,但为什么不使用data
属性呢?它是用来保存元数据的,非常适合这种场景。
<img src="//placehold.it/32x32" class="item cookable" data-type="fish">
jQuery通过.data方法内置了对此的访问权限,因此当您需要根据单击的内容来减少或增加数量时,只需在必要时使用以下内容:
// Fetch the "type" of fish from the data attribute
var type = $(this).data("type");
// And update the inventory
inventory[type]--;
将data
属性用于其他元数据,因此data-foo="hello" data-bar="world"
这些可以使用jQuery .data()
作为对象获取,它将返回{foo: "hello", bar: "world"} or fetch them individually by passing the data name
.data("foo")`
就我个人而言,我会使用这个来代替ID。
[this.id]--
不起作用。这将生成一个具有单个元素(this.id
引用的字符串)的数组,并尝试递减该数组。递减数组没有多大意义。
不能像这样动态地访问局部变量(在某些情况下可以,但实际上不应该)。但是,可以用属性来实现,所以您必须稍微调整一下。
把你所有的东西都存储在一个对象中,也许可以称之为inventory
。
var inventory = {
fish1: 10,
fish2: 5,
worms: 3
};
现在你只需要稍微调整一下就可以使用递减法:
if(e.shiftKey && inShop[this.id] === 0) {
coins = coins+price[this.id]
coinUpdate();
inventory[this.id]--; // decrement an item count in your inventory
}
JS中的所有全局变量都是在窗口对象上创建的。如果每个id有一个变量,那么只需要执行window[this.id]--
或window[this.id]++
。无论如何,在JavaScript中,Window对象充当全局名称空间,通常用变量混淆全局名称空间是不好的做法。您应该创建一个包含所有项目计数器的新对象(例如items
),对于添加的每个项目,您可以在删除时执行items[this.id]++
或items[this.id]--
- 如何将HTML id分配给元素,以及如何将JavaScript应用于元素
- 内部分区字体大小获胜'调整浏览器窗口大小时不会随媒体查询而更改
- difference between '$(<%= DDL.ID %>) & $('
- 调整窗口大小时,可拖动的对象会出现在容器外部
- ExtJS——在展开/折叠时调整面板高度
- 使用Javascript获取所选选项ID
- 根据id将json数组组合为一个json数组
- 是否有一个JS/jQuery函数可以获取某个类的每个元素的ID
- 对id以某个字符串开头的元素进行计数
- 如果元素's的ID以数字开头
- 通过id和class属性获取元素
- 自动调整谷歌使用位置id映射多个标记
- 如何调整chromeOptions缩放级别而不必担心需要传入此id
- 获取同级的 name 属性,使用它来调整具有等效 ID 的元素的值
- 如何获取当前可拖动和可调整大小的 id
- 如何根据单击对象的id调整变量
- 使用画布调整大小's的id
- Javascript的滚动大小调整ID与最小值首先应用
- 使用jquery调整HTML对象与动态生成的id大小
- 如果Dgrid的id以数字开头,则Dgrid列调整大小,隐藏,重新排序属性会产生错误