I have this array:
var employees = [ { "firstName":"John" , "lastName":"Doe" }, { "firstName":"Anna" , "lastName":"Smith" }, { "firstName":"Peter" , "lastName": "Jones" } ];
and I would like to print the entire array out as a html table. How would I accomplish this?
I tried this but could only get the final name the print:
<!DOCTYPE html> <html> <body> <h2>Create Object from JSON String</h2> <p> First Name: <span id="fname"></span><br /> Last Name: <span id="lname"></span><br /> </p> <script type="text/javascript"> var txt = '{"employees":[' + '{"firstName":"John","lastName":"Doe" },' + '{"firstName":"Anna","lastName":"Smith" },' + '{"firstName":"Peter","lastName":"Jones" }]}'; var obj = eval ("(" + txt + ")"); for (i=0; i<txt.length; i++){ document.getElementById("fname").innerHTML=obj.employees[i].firstName document.getElementById("lname").innerHTML=obj.employees[i].lastName } </script> </body> </html>
Advertisement
Answer
Using jQuery you can do:
var txt = '{"employees":[' + '{"firstName":"John","lastName":"Doe" },' + '{"firstName":"Anna","lastName":"Smith" },' + '{"firstName":"Peter","lastName":"Jones" }]}'; // $.parseJSON will parse the txt (JSON) and convert it to an // JavaScript object. After its call, it gets the employees property // and sets it to the employees variable var employees = $.parseJSON( txt ).employees; var $table = $( "<table></table>" ); for ( var i = 0; i < employees.length; i++ ) { var emp = employees[i]; var $line = $( "<tr></tr>" ); $line.append( $( "<td></td>" ).html( emp.firstName ) ); $line.append( $( "<td></td>" ).html( emp.lastName ) ); $table.append( $line ); } $table.appendTo( document.body ); // if you want to insert this table in a div with id attribute // set as "myDiv", you can do this: $table.appendTo( $( "#myDiv" ) );
jsFiddle: http://jsfiddle.net/davidbuzatto/aDX7E/