Wednesday, 15 May 2013

javascript - HTML JS assembling array name works fine but then prints as a "string" rather than the actual job -



javascript - HTML JS assembling array name works fine but then prints as a "string" rather than the actual job -

i doing bit of prelim coding game robots.

i have written short programme in javascript track turns , player in game. can update turns, homecoming turn no problem.

i want utilize arrays hold info players. i'm learning @ moment i'm using array 2 elements.

the names player1_data, player2_data, etc. want find out content of array element 0, becomes player1_data[0], fine.

if type in fine , element returned me.

however, if assemble array info, going "player" + current_player + "_data[" + element +"]" looks fine, doesn't not function.

it string of characters, not actual array element request if type in manually!

what problem?

<!doctype html> <html> <head> </head> <body> <button class="button" onclick="vardisplay(), updateturn() ">show variables</button> <p id="para1">false</p> <p id="para2">2</p> <p id="para3">2</p> <p id="para4">2</p> <p id="para5">2</p> <p id="para6">2</p> <p id="para7">2</p> <p id="para8">2</p> <script> var ifselect = 0 var current_turn = 0 var last_turn = 0 var players_in_game = 5 var current_player = 1 var current_robot = 123 var player_id = "player" + current_player + "_data"; var arrayselector = 0 var player_array_display = player_id + "[" + arrayselector + "]"; var player1_data = ["dave", current_robot]; var player2_data = ["kim", current_robot]; var player3_data = ["nigel", current_robot]; var player4_data = ["bob", current_robot]; function updateturn() { if (current_player > players_in_game - 1) { current_player = 1 current_turn = current_turn + 1 } else { current_player = current_player + 1; player_id = "player" + current_player + "_data"; player_array_display = player_id + "[" + arrayselector + "]"; } } function vardisplay() { document.getelementbyid("para1").innerhtml = "random stuff"; document.getelementbyid("para2").innerhtml = "players_in_game: " + players_in_game; document.getelementbyid("para3").innerhtml = "current_turn: " + current_turn; document.getelementbyid("para4").innerhtml = "current_player: " + current_player; document.getelementbyid("para5").innerhtml = "current_robot: " + current_robot; document.getelementbyid("para6").innerhtml = "player_id: " + player_id; document.getelementbyid("para7").innerhtml = "player_array_display: " + player_array_display; document.getelementbyid("para8").innerhtml = player2_data[0]; } </script> </body> </html>

i want utilize arrays hold info players. im learning @ moment i'm using array 2 elements. names player1_data, player2_data etc.

don't this. instead of grouping similarly named variables relationship based on naming conventions, grouping values using collections provided language.

var player_data_for_all_players = [player1_data, player2_data];

will allow do

player_data_for_all_players[player_index][array_selector]

or

var player_data_by_name = { 'dave': current_robot, ... };

which allows identify players using (unique) value more self-explanatory in debugging console.

javascript arrays

No comments:

Post a Comment