Необходимо отправить динамические (не жесткие) данные в элемент выбора.
Этот код прекрасно работает на одном из моих листов, но не работает на другом листе .
Элемент "select" не обновляется с опциями, которые я отправляю. .
Я тоже не получаю сообщение об ошибке.
Я потратил много времени, дёргая его и пытаясь выяснить, почему, но всё ещё не понимаю, что не так.
p.s. Я использовал фиктивный объект для отправки данных в целях тестирования.
HTML (используется MaterializeCss framework)
<select class="icons browser-default" id="selName" onChange ="getNameText();">
<option value="" disabled selected>Choose week</option>
<div id = "err"></div>
//select element initialization in framework
document.addEventListener('DOMContentLoaded', function() {
var elems = document.querySelectorAll('select');
var options = handlers()
var instances = M.FormSelect.init(elems);
});
function handlers() {
var success = google.script.run.withSuccessHandler(addOptions).getNamesForDropdown()
var failure = google.script.run.withFailureHandler(showError).getNamesForDropdown()
return;
}
function addOptions(names) {
var selectTag = document.getElementById("selName") //select tag
for (var k in names) {
var thisID = k;
var thisText = names[k];
var option = document.createElement("option"); //creating option
option.text = thisText
option.value = thisID;
selectTag.add(option);
}
}
function showError() {
var err = document.getElementById("err").innerHTML = "There was an error."
}
//get the text of selected option
function getNameText() {
var sel = document.getElementById("selName")
var nameText = sel.options[sel.selectedIndex].text;
return nameText;
}
Пустой объект, который я отправляю:
function getNamesForDropdown() {
var namesObj = {
one: "blah",
two: "blahblah"
}
return namesObj;
}
Вот результат, который я получаю (на экране у вас есть только жестко закодированный вариант):