我正在构建一个游戏统计计算器,但遇到了一个奇怪的问题。我有 4 个统计数据,并且我有一个起点池可以分布在这 4 个统计数据中。我使用按钮添加统计点,但我也使用按钮删除统计点以防出错。多亏了这里的帮助,我设法通过减少剩余池并增加我点击的统计数据来完成添加技能点的初始逻辑。这很好用。但是,当我介绍删除点函数时,它们的行为很奇怪。我知道这是一个数学/逻辑问题,但我无法解决。出于某种原因,一旦我将 100 个统计点分配给 4 个统计数据中的任何一个,删除函数就会停止满足 If 条件。
这是我的做法:
// stats
const str = document.getElementsByName('str');
const dex = document.getElementsByName("dex");
const vit = document.getElementsByName("vit");
const ene = document.getElementsByName("ene");
const statsRemaining = document.getElementsByName("statsRemaining");
// Add stats
function addStr() {
if (statsRemaining[0].value > 0) {
str[0].value++;
statsRemaining[0].value--;
}
}
function addDex() {
if (statsRemaining[0].value > 0) {
++dex[0].value;
--statsRemaining[0].value;
}
}
function addVit() {
if (statsRemaining[0].value > 0) {
vit[0].value++;
statsRemaining[0].value--;
}
}
function addEne() {
if (statsRemaining[0].value > 0) {
ene[0].value++;
statsRemaining[0].value--;
}
}
// Remove stats
function removeStr() {
if (str[0].value > str[0].defaultValue) {
str[0].value--;
statsRemaining[0].value++;
}
}
function removeDex() {
if (dex[0].value > dex[0].defaultValue) {
dex[0].value--;
statsRemaining[0].value++;
}
}
function removeVit() {
if (vit[0].value > vit[0].defaultValue) {
vit[0].value--;
statsRemaining[0].value++;
}
}
function removeEne() {
if (ene[0].value > ene[0].defaultValue) {
ene[0].value--;
statsRemaining[0].value++;
}
}
function resetStats() {
str[0].value = str[0].defaultValue;
dex[0].value = dex[0].defaultValue;
vit[0].value = vit[0].defaultValue;
ene[0].value = ene[0].defaultValue;
statsRemaining[0].value = statsRemaining[0].defaultValue;
}
您可以在我实施它的地方实时看到它 - https://www.diablo-2.net/character-planner/?class=Necromancer&clevel=99#character-stats。尝试在每 4 个上分配超过 100 个统计数据,然后删除停止工作。我有一个 JS fiddle,它的实现更温和,更适合这里,但我什至用相同的代码得到不同的结果!- 那里的“能量”数据没有任何问题! https://jsfiddle.net/Skarsburning/1cjzoxfb/28/
感谢帮助解决这个逻辑/数学问题。
郎朗坤
四季花海
繁花如伊
当年话下
随时随地看视频慕课网APP
相关分类