2017-03-21 40 views
0

我想知道是否可以在按下按鈕時創建一個新變量。例如:如果我有一個名爲enemy1的變量並按下該按鈕,是否可以創建一個名爲enemy2的變量?如果這看起來像一個愚蠢的問題,我很抱歉。我想創建一個for循環,我可以根據'i'定義一個變量名稱變化。按鈕onclick時可能用新名稱創建新變量?

+1

聽起來像是一個使用數組的好地方。 –

+0

變量是通過用'var'聲明它們來創建的。變量不是動態創建的,也不是由名稱動態引用的。這不是JS如何工作。可能你想要的是添加一個**屬性**到一個新名字的對象。 –

回答

0

可能最好使用數組(點擊添加新值)或對象(點擊添加新鍵)。我想你應該使用數組,所以這裏有一個例子:

const enemies = []; 
 

 
class Enemy { 
 
    speak() { 
 
     return 'COME AT ME BRO!!!'; 
 
    } 
 
} 
 

 
document.querySelector('#createEnemy').addEventListener('click', function(event) { 
 
    const enemy = new Enemy(); 
 
    enemies.push(enemy); 
 
    console.log(enemies.length, 'enemies say', enemy.speak()); 
 
}, false);
<button id="createEnemy">Create Enemy</button>

0

您不需要動態變量,而不是你需要一個變量,將包含動態的大小(敵人的動態數) 。以下是您需要的代碼。 Here you can see demo

<button id='createEnemy' onclick='addEnenemy()'>Add Enenmy</button> 
    <div id='enemiesContainer'> </div> 
    <script> 
     var enemies = [];  
     var enemyDiv = document.getElementById('enemiesContainer'); 
     function addEnenemy() { 
      var newEnenmy = 'enemy'+(enemies.length+1); 
      enemies.push(newEnenmy); 
      //following will show it in your page 
      enemyDiv.innerHTML = enemyDiv.innerHTML + '<br/><label>'+newEnenmy+'</label>'; 
      console.log(enemies); //shows in console 
     } 
    </script>