Как программно установить значения всплывающего меню в Dashcode
-
20-09-2019 - |
Вопрос
Я пытаюсь программно установить значения для всплывающего меню в Dashcode.Я могу изменить текст / значение некоторых статически определенных значений по умолчанию (из инспектора), но не добавлять или удалять их.Когда представление инициализируется, оно должно принимать переменное количество опций.
var popup = document.getElementById('popup');
//popup.options = []; /* Doesn't clear the list */
//popup.options.length = 0; /* Doesn't clear the list */
popup.options[0].text = "Option 1";
popup.options[0].value = "123";
Как я могу изменить список?(Ответы LMGTFY не требуются :)
Решение
В итоге я решил это так:
//remove all
if (popup.hasChildNodes()) {
while (popup.childNodes.length >= 1) {
popup.removeChild(popup.firstChild);
}
}
//add new
$.each(items, function(i, item) {
var option = document.createElement("option");
option.text = item.name;
option.value = item.id;
popup.appendChild(option);
});
Другие советы
Просто попытка, но не могли бы вы создать все всплывающее окно на JavaScript и установить количество элементов в раскрывающемся/всплывающем меню, передав параметры.Тогда, когда вы захотите изменить какой-либо из элементов, вы можете вызвать JavaScript с новыми параметрами?
Или я неправильно понял вопрос.
когда я пытаюсь привязать пункты всплывающего меню динамически, как это делаете вы, я вижу, что значения, которые я присваиваю пунктам всплывающего меню, верны, но ни один из пунктов не отображается во всплывающем окне.
Есть ли что - то , чего я не понимаю ?Вот мой код:
var ddlCurrencyCode = document.getElementById('ddlCurrencyCode');if (ddlCurrencyCode.hasChildNodes()) {
while (ddlCurrencyCode.childNodes.длина >= 1) {
ddlCurrencyCode.removeChild(ddlCurrencyCode.firstChild);
}
}
для (var i = 0;i < результат.строки.длина;++i) {
переменная строка = результат.строки.элемент (i);
var ddlItem = document.createElement("ddlItem");ddlItem.text = строка ['ключ'];ddlItem.value = строка['значение'];ddlCurrencyCode.appendChild(ddlItem);
}