2016-03-06 56 views
0

进出口在JavaScript的相当新的,所以不要指望我知道很多别人比什么书面:)如何生成的JavaScript的JavaScript代码,如果更多钞票

所以我有很多的javascript代码,几乎看起来javascript文件除了一个数字与每个元素都在变化之外。

我的大部分代码都在函数内部,因为它是剪切掉的,所以没有写入。

我的代码的相关部分看起来像:

//Upgrade 1 
    if (CREDITS >= UpgradePrice1 && Upgrade1 === 0){ 
     document.getElementById("Upgrade1").style.display = "block";} 
    else{document.getElementById("Upgrade1").style.display = "none";} 

    //Upgrade 2 
    if (CREDITS >= UpgradePrice2 && Upgrade2 === 0){ 
     document.getElementById("Upgrade2").style.display = "block";} 
    else{document.getElementById("Upgrade2").style.display = "none";} 

    //Upgrade 3 
    if (CREDITS >= UpgradePrice3 && Upgrade3 === 0){ 
     document.getElementById("Upgrade3").style.display = "block";} 
    else{document.getElementById("Upgrade3").style.display = "none"; 

    And so on... 

的值赋值在StandardValues.js文件名为:

var UpgradeName1 = "Craftmanship Lvl 1"; 
var UpgradePrice1 = 100; 
var UpgradeContent1 = "+100% Gods Hands! <br> +20% Blessed Farmer!"; 
var Upgrade1 = 0; 

var UpgradeName2 = "Craftmanship Lvl 2"; 
var UpgradePrice2 = 200; 
var UpgradeContent2 = "+100% Gods Hands! <br> +20% Blessed Farmer!"; 
var Upgrade2 = 0; 

And so on... 

如果它是一个HTML代码,我尝试生成我会使用一个PHP函数,并使其回声相同的代码与更改的数字specefic的时间量。 但因为这是一个JavaScript文件,我真的不认为这是一个选项?

以前的JavaScript代码位于.js文件中。

我认为一个可能的解决方法可能是:

Inside a .php file: 

<?php 
$Upgrades = 10; 
$CurrentUpgrade = 1; 

while ($Upgrades >= $CurrentUpgrade){ 
echo " 
<script> 
function Upgrade1(){ 
//Upgrade ".$CurrentUpgrade." 
    if (CREDITS >= UpgradePrice".$CurrentUpgrade." && Upgrade".$CurrentUpgrade." === 0){ 
     document.getElementById('Upgrade".$CurrentUpgrade."').style.display = 'block';} 
    else{document.getElementById('Upgrade".$CurrentUpgrade."').style.display = 'none';} 
} 
</script> 
"; 
$CurrentUpgrade ++; 

} 

?> 

* Sry基因在这部分的任何错字,使得它相当快。

但我很想将JavaScript代码保存在我的.js文件中,而不是在我的.php文件中。

所以总结起来我想(如果可能):

  • 保持所有的代码里面的js文件
  • 生成与JavaScript代码
  • 重复相同的JavaScript的JavaScript代码元素只有一个数字随每个元素而变化
  • 尝试通过这样做来缩短代码量。
  • 仍然可以在购买功能中单独使用任何分配的变量。

我希望我给了所有相关信息:)

在此先感谢。

+0

使用Javascript数组和循环。也就是说,没有单独的变量UpgradePrice1,UpgradePrice2等,有一个名为UpgradePrice的数组。 – nnnnnn

+2

会更好地学习如何编写循环和函数,所以你不必一遍又一遍地重复你的代码。 – charlietfl

+2

为什么不创建一个带有两个参数的函数?这看起来是每个检查之间唯一改变的。 – httpNick

回答

0

您可以创建一个方法(在index您传递您的变量的末尾号):

function myFunction(newUpgradePrice, newUpgrade, index) { 
    if (CREDITS >= newUpgradePrice && newUpgrade === 0){ 
     document.getElementById("Upgrade" + index).style.display = "block";} 
    else{document.getElementById("Upgrade" + index).style.display = "none"; 
} 

这是你在找什么?任何需要改变以满足您的需求?

+0

(看看新的代码更新) 当我还需要在其他地方使用UpgradePrice1而不是我重复的代码时,我该如何完成此操作? :) Sry为愚蠢的问题相当新的一个Javascript :) – user1509104

+0

这是可以恨我现在:P 我在哪里和如何分配newUpgradePrice,newUpgrade和索引? :) – user1509104

+0

当你调用它时,你将它们传递给函数。函数用于减少代码。 如果您需要将UpgradePrice4和Upgrade4传递给函数,您可以这样调用它:myFunction(UpgradePrice4,Upgrade4,4); – goncalopinto