You are not storing the parsed html of your string, try this:
for(var i = 0; i < staff.length; i++) {
var htmlBox = $("<div><span class='name'></span><span class='age'></span></div>");
htmlBox.find('span.name').text(staff[i]['name']); // Not sure
htmlBox.find('span.age').text(staff[i]['age']); // doesn't work
$("#wrapper").append(htmlBox);
}
Also watch out I changed the condition of your for loop, it was checking for <= and should be <, because in JS array indexes start from 0.
Also also comments in JS are with // for single line or /* and */ for multi line.
Here you have a working code snippet (with some extra stuff to make it actually work)
var staff = [
{name: 'Eu Chi', age: '??'},
{name: 'Alvaro Castro', age: '29'}
];
for(var i = 0; i < staff.length; i++) {
var htmlBox = $("<div><span class='name'></span><span class='age'></span></div>");
htmlBox.find('span.name').text(staff[i]['name']); // Not sure
htmlBox.find('span.age').text(staff[i]['age']); // doesn't work
$("#wrapper").append(htmlBox);
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="wrapper"></div>
$(htmlBox).find...as-is your just working with a string.htmlBoxis just a string, unless you just didn't include you parsing it through jQuery$(htmlBox), it doesn't work.