JavaScript AJAX Basics (retiring) Programming AJAX Stage 2 Challenge

Chris Reich
Chris Reich
15,163 Points

What does roomstatusHTML += '<li class="empty">; do?

What is the relationship between the name of the ul class and the var roomstatusHTML? I guess my question is, does the name of the ul classs have something to do with the JSON data or is it arbitrary? Code below.

var xhr = new XMLHttpRequest(); xhr.onreadystatechange = function () { if(xhr.readyState === 4 && xhr.status === 200) { var employees = JSON.parse(xhr.responseText); var statusHTML = '<ul class="bulleted">'; for (var i=0; i<employees.length; i += 1) { if (employees[i].inoffice === true) { statusHTML += '<li class="in">'; } else { statusHTML += '<li class="out">'; } statusHTML += employees[i].name; statusHTML += '</li>'; } statusHTML += '</ul>'; document.getElementById('employeeList').innerHTML = statusHTML; } }; xhr.open('GET', '../data/employees.json'); xhr.send();

var xhrr = new XMLHttpRequest(); xhrr.onreadystatechange = function () { if(xhrr.readyState === 4 && xhr.status === 200) { var rooms = JSON.parse(xhrr.responseText); var roomstatusHTML = '<ul class="rooms">'; for (var i = 0; i<rooms.length; i+=1) { if (rooms[i].available === true) { roomstatusHTML += '<li class="empty">'; } else { roomstatusHTML += '<li class="full">';
} roomstatusHTML += rooms[i].room; roomstatusHTML += '</li>'; } roomstatusHTML += '</ul>'; document.getElementById('roomList').innerHTML = roomstatusHTML; } }; xhrr.open('GET', '../data/rooms.json'); xhrr.send();

2 Answers

John Coolidge
John Coolidge
12,613 Points

Chris,

roomstatusHTML (or statusHTML, as it appears in your code) followed by += takes the value of statusHTML and adds to it the string after the +=, in this case '<li class="empty">'. Whatever the value of statusHTML, the string '<li class="empty">' will be added to it.

The class name of the ul (or do you mean the li in your question header?) is added so that CSS can be applied to that element. If you add the li to the statusHTML variable without the class 'empty', the CSS in the CSS file under '.empty' will not be applied to that li when it is displayed on the web page. It has nothing to do with JSON nor is it arbitrary.

I hope this helps, John

Matthew Fung
Matthew Fung
7,497 Points

In JavaScript += simply means to add something to the current value. For a string, you are adding extra words or characters onto that string.

In this case, it will add the string '<li class="empty">' onto the end of the variable roomstatusHTML, creating a larger string. This was you can quickly iterate over and over, adding the html needed for each room in the array.

The class name is for the styling of the list item. If you check out the 'css/main.css' file in workspaces, it contains the styling for these list items. The class has nothing to do with JavaScript or JSON, it's simply to visually show whether the person is in the office or not, or whatever.