2016-03-06 37 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