编辑
我测试了一些东西,显然,这个:
if(info.max.value == "") {maxdesiredvalue = 999999999999999999999}
在chrome控制台中返回:
> maxdesiredvalue
< 999999999
所以我认为问题确实来自那里......我们可以将一个最大位数归于变量吗?
我已经进入javascript几个月了,我已经制作了一个为桌面RPG生成随机武器的程序。
生成的每一件武器都有相对于它属性的价格。我今天的问题是这个价格不会超过9位数(不能达到10亿),即使它可以
在我的生成器中,可以在生成武器之前选择某些属性。如果我故意尝试生产价值超过十亿美元的黄金,它会立即崩溃。另一方面,如果有任何方式可以生成武器而不超过十亿,它就会这样做。
例如,最广泛的金属是“Residuum”。在Residuum中可以生成的唯一两种武器是飞镖和手里剑,因为它们只使用1/16的锭。因此,如果我将金属设置为Residuum,它们将是唯一可能生成的2种武器。从这一点来说,如果我试图指定我想要一个Residuum Sword,它就会像之前解释的那样崩溃。
在我的生成选项中,我还有一个文本输入供用户选择武器的最小值和/或最大值。我将默认的最大值设置为无穷大,所以它应该不是问题。
function desiredvalue(){
if(info.max.value == "") {maxdesiredvalue = Infinity}
else {maxdesiredvalue = parseInt(info.max.value)}
if(info.min.value == "") {mindesiredvalue = 0}
else {mindesiredvalue = parseInt(info.min.value)}
}
在我的HTML中:
Min price: <input type="text" name="min" value="" onchange="desiredvalue()">
Max price: <input type="text" name="max" value="" onchange="desiredvalue()">
我已经尝试停用此功能以查看是否存在问题,但即使没有特定的最大值,如果它们的值超过9位,仍然不会生成武器。
也许问题设置在值公式中,所以在这里,即使它可能不是一个很大的帮助,因为它全部由变量组成。
WeapValue = ((((IngotValue * Ingots) + CraftTime + (actualEnchantTime * 3) + (LS * 0.02) + (R * 0.05) + BS + (FTH * 0.03)) * (((BPArace + BPAstatus + BPAlevel + ((BPAcrit1 + 1) * BPAcrit2)) / 100) + 1)) + PAenchant + PAaugment1 + PAaugment2 + PAaugment3)
此后,该值也会被修改为适合金,银或铜......
WeapValue.toLocaleString('en-US', {minimumFractionDigits: 0});
WeapValue = WeapValue.toFixed(2);
if (WeapValue >= 2) {WeapValue2 = Math.ceil(WeapValue); goldtype = " GP"}
else if (WeapValue < 2 && WeapValue >= 1) {WeapValue2 = WeapValue * 10; goldtype = " SP"}
else if (WeapValue < 1 && WeapValue >= 0) {WeapValue2 = WeapValue * 100; goldtype = " CP"}
脚本中没有任何其他内容真正改变了值,影响它的所有变量都是先前定义的,我并不认为它们是问题,因为它们实际上似乎有用(它们只是使价格超过9位数) )。
如果你有任何与剧本有关的问题,我会在这里回答,但我不能把完整的剧本写成,因为它非常非常长(2543行)......
如果有人知道如何处理我的问题,我们将非常感激!再说一次,我不是一个javascript专家,但我尽了最大的努力并在互联网上寻求了很多帮助,但我还是无法摆脱这个问题......
谢谢!