也许我不理解这一点,或者我只是写错了。我正在进行增量游戏,并试图找出总dps然后我可以改变黄金的生成方式
这是我尝试使用该函数的HTML行。
Total DPS:<span id="dps">0</span>
这是javascript
function dps(){
dps = aadmg + daggerdmg + sworddmg;
document.getElementById("dps").innerHTML = dps;
};
function damageClick(number){
damage = damage + number;
document.getElementById("damage").innerHTML = damage;
gold =gold +1;
document.getElementById("gold").innerHTML = gold;
xp = damage * 2;
document.getElementById("xp").innerHTML = xp;
};
var aadmg = 0;
function buyAA(){
var aaCost = Math.floor(10 * Math.pow(1.1,aadmg));
if(gold >= aaCost){
aadmg = aadmg + 1;
gold = gold - aaCost;
document.getElementById("aadmg").innerHTML = aadmg;
document.getElementById("gold").innerHTML = gold;
};
var nextCost = Math.floor(10 * Math.pow(1.1,aadmg));
document.getElementById('aaCost').innerHTML = nextCost;
};
function buyDagger(){
var daggerCost = Math.floor(300 * Math.pow(1.1,daggerdmg));
if(gold >= daggerCost){
daggerdmg = daggerdmg + 5;
gold = gold - daggerCost;
document.getElementById("daggerdmg").innerHTML = daggerdmg;
document.getElementById("gold").innerHTML = gold;
};
var nextCost = Math.floor(300 * Math.pow(1.1,daggerdmg));
document.getElementById('daggerCost').innerHTML = nextCost;
};
var sworddmg = 0;
function buySword(){
var swordCost = Math.floor(500 * Math.pow(1.1,sworddmg));
if(gold >= swordCost){
sworddmg = sworddmg + 7;
gold = gold - swordCost;
document.getElementById("sworddmg").innerHTML = sworddmg;
document.getElementById("gold").innerHTML = gold;
};
var nextCost = Math.floor(500 * Math.pow(1.1,sworddmg));
document.getElementById('swordCost').innerHTML = nextCost;
};
我的想法是我在html中使用了功能dps然后它应该等于aadmg + daggerdmg + sworddmg。我正在使用document.getElementByID(“dps”)获取元素dps。innerHTML = dps;。我也尝试过为所有dmg添加getElement。我很困惑如何从HTML中获取这些数字然后将它们一起添加并显示它们。
答案 0 :(得分:4)
你有自杀功能。当您调用dps
函数一次后,它将使用您计算的值替换自身。下次您尝试调用它时,dps
标识符不再指向该函数,因此代码将崩溃。
在函数中使用其他变量(并使用var
关键字使其成为本地变量):
function dps(){
var x = aadmg + daggerdmg + sworddmg;
document.getElementById("dps").innerHTML = x;
};
(它只是使它成为本地的,但是没有充分的理由使用与函数同名的局部变量。)
答案 1 :(得分:2)
我认为你很难理解如何在javascript中调用函数。它们不是因为它们与html元素具有相同的名称/ ID而被调用的。 您需要一些能够触发计算的东西。一个按钮例如。 一个按钮可以触发你的功能:
block
然后你的函数dps()必须看起来像这样:
<button id="myButton">clickme to calulate</button>
<script>
document.getElementById('myButton').addEventListener("click", function(){
dps();
});
</script>
但是你应该重构你的代码,以便拥有一个保存和提供所需数据的对象,而不是使用普通的全局变量。