gpt4 book ai didi

Javascript 基本计算总是得到 NaN

转载 作者:行者123 更新时间:2023-12-03 06:35:54 24 4
gpt4 key购买 nike

您好,我正在为游戏做一个基本计算器,但我遇到了一个问题,我刚刚开始学习这种编程语言,阅读了我找到的所有教程,现在我只是编写一些代码并获得一些经验,所以我编写了一个计算我之前在 php 中编写的代码运行得很好,但我在那里使用了不同的技术,所以在 javascript 中,我创建了一个函数,该函数将被称为按下计算按钮的函数,并创建一个对象来存储所有数据5位玩家看看:

function count(){

function ninjas (name,dmg,dmgrate,dmggrow,speed,fury) {
this.name = name;
this.dmg = dmg;
this.dmgrate = dmgrate;
this.dmggrow = dmggrow;
this.speed = speed;
this.fury = fury;
}
var name = [];
var dmg = [];
var dmgrate = [];
var dmggrow = [];
var speed = [];
var fury = [];
var ninja = [];
for(var i = 0; i <5; i++){
name[name.length] = document.getElementById("ninja" + (i +1)).value;
dmg[dmg.length] = document.getElementById("dmg" + (i +1)).value;
dmgrate[dmgrate.length] = document.getElementById("dmgrate" + (i +1)).value;
dmggrow[dmggrow.length] = document.getElementById("dmggrow" + (i +1)).value;
speed[speed.length] = document.getElementById("speed" + (i +1)).value;
fury[fury.length] = 50;
ninja[i] = new ninjas(name[i],dmg[i],dmgrate[i],dmggrow[i],speed[i],fury[i]);
}

ninja.sort(function(a, b){return b.speed - a.speed});

var totaldmg;
var damagerate;
var damagegrow;
var furydmg;

for(var a = 0; a < 6; a++){ // 6 fight
for(var b = 0; b < 5; b++){ // 5 ninjas
if(ninja[b].name == "Kabuto"){
if(ninja[b].fury == 100){
damagerate = ninja[b].dmg / 100 * ninja[b].dmgrate;
damagegrow = damagerate / 100 * ninja[b].dmggrow;
furydmg = damagegrow + (damagegrow / 100) * ((ninja[b].fury - 100) / 0.25);
totaldmg += furydmg;
for(var c = 0; c < 5; c++){ // add fury each ninja by 25
ninja[c].fury +=25;
}
ninja[b].fury -= 25;
ninja[b].fury +=100;
}else if(ninja[b].fury > 100){
damagerate = ninja[b].dmg / 100 * ninja[b].dmgrate;
damagegrow = damagerate / 100 * ninja[b].dmggrow;
totaldmg += damagegrow;
for(var c = 0; c < 5; c++){// add fury each ninja by 25
ninja[c].fury +=25;
}
ninja[b].fury -= 25;
ninja[b].fury +=100;
}else {
damagerate = ninja[b].dmg / 100 * ninja[b].dmgrate;
totaldmg += damagerate;
ninja[b].fury += 50;
}
} else {
if(ninja[b].fury == 100){
damagerate = ninja[b].dmg / 100 * ninja[b].dmgrate;
damagegrow = damagerate / 100 * ninja[b].dmggrow;
totaldmg += damagegrow;
ninja[b].fury = 0;
}else if(ninja[b].fury > 100){
damagerate = ninja[b].dmg / 100 * ninja[b].dmgrate;
damagegrow = damagerate / 100 * ninja[b].dmggrow;
furydmg = damagegrow + (damagegrow / 100) * ((ninja[b].fury - 100) / 0.25);
totaldmg += furydmg;
ninja[b].fury = 0;
}else {
damagerate = ninja[b].dmg / 100 * ninja[b].dmgrate;
totaldmg += damagerate;
ninja[b].fury += 50;
}
}
}
}

document.getElementById("result").innerHTML = totaldmg;
};

我使用了几个循环来将所有数据存储在她的位置,然后使用短函数通过速度属性来短路每个步骤,我检查了一切是否正常,但最后我仍然得到了 NaN 的结果,有人可以吗?帮我解决这个问题我已经检查了我的代码很多次,但可以找到错误所在,也许有一些我不知道的关于 JavaScript 的东西并且错过了

最佳答案

将总变量初始化为 0

这样totaldmg += value 就不会导致totaldmg = "undefined + value;

var totaldmg = 0;
var damagerate = 0;
var damagegrow = 0;
var furydmg = 0;

此外,当从 DOM 读取值时,将它们转换为数字,因为字符串文字将连接起来

for(var i = 0; i <5; i++){
name[i] = parseInt(document.getElementById("ninja" + (i +1)).value, 10);
dmg[i] = parseInt(document.getElementById("dmg" + (i +1)).value, 10);
dmgrate[i] = parseInt(document.getElementById("dmgrate" + (i +1)).value, 10);
dmggrow[i] = parseInt(document.getElementById("dmggrow" + (i +1)).value, 10);
speed[i] = parseInt(document.getElementById("speed" + (i +1)).value, 10);
fury[i] = 50;
ninja[i] = new ninjas(name[i],dmg[i],dmgrate[i],dmggrow[i],speed[i],fury[i]);
}

关于Javascript 基本计算总是得到 NaN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38211969/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com