你好,我正在做一个游戏的基本计算器,但我面临一个问题,我刚开始学习这种编程语言阅读我发现的所有教程,现在我只是做一些代码,并获得一些经验,所以我写了一个计算代码,我之前在php中编写的计算代码工作完美,但我在那里使用不同的技术,所以在JavaScript中我创建了一个函数,将被称为计算按钮将被按下,并创建一个对象存储的5名球员全部数据来看一看:Javascript的基本计算总是得到NaN
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;
};
我用几个循环的所有数据存储在自己的地方,然后每一步我做了车后的速度属性使用功能的短短大家CK如果一切都好,但最终以某种方式,我仍然有结果这是NaN有人可以帮助我解决这个问题我检查了我的代码多次,但可以找到哪里是错误的,也许有一些我不知道一个JavaScript和错过
尝试将问题压缩为[mcve],它不仅可以帮助我们,还可以帮助您理解问题的来源 – BeyelerStudios
您正在对字符串执行数学运算。 –
[欢迎使用JavaScript](https://www.destroyallsoftware.com/talks/wat) – Nixon