I am trying to add an array of html element to a div element on a page but it's not showing. When I do a console.log on the div element it prints the array confirming that the array is added to the div element yet it doesn't appear on the page. below is the code for what I.m trying to do:
html:
<form action="question" method="post">
<div class="combobox">
<label for="switchQuestion">Switch Question:</label>
<select id="switchQuestion"></select>
</div>
<div id="go-btn">
<input id="go" type="button" value="Go" />
</div>
</form>
<div class="exam-container">
<div id="exam-question"></div>
</div>
jquery:
const $examQuestions = $('#exam-question'),
output = [];
loadQuestions($examId, function(question){
for(let i in question) {
$switchQuestion.append($('<option />').val(question[i].id).text(Number(i)+1));
loadChoices(question[i].id, question[i].multiAnswer, function(choices) {
output.push(
`<div class='question'> ${(Number(i)+1)}. ${question[i].problemDescription} </div>
<div class='choices'> ${choices.join('')} </div>`
);
});
}
});
output.join('');
$examQuestions.innerHTML = output;
function loadChoices(id, isMulti, callback) {
let choices = [];
$.ajax({
url: location.protocol + '//' + location.host + '/online-test-exam-maker' +'/choices/' + id,
dataType: 'json',
type: 'GET',
success: function (data, status) {
let elemType = isMulti ? 'checkbox' : 'radio';
$.each(data, function (i, v) {
choices.push(
`<label>
<input type='${elemType}' name='${v.questionId}' value='${v.id}' id='${v.id}' />
${v.choiceText}
</label>`
);
});
if(typeof callback === 'function') {
callback(choices);
}
},
error: function(){
}
});
}