The string that you pass to the innerHTML is not valid(you do it step-by-step, so select element doesn't have a closing tag).
function createShiftsForm(day){
var container = day + ' morn: <select name="' + day + 'm"><option value="0" selected>0</option>';
for (i=1; i <= 20; i++){
container += '<option value="' + i + '">' + i + '</option>';
}
container += '</select>';
document.getElementById("shifts").innerHTML = container;
}