Я работаю над приложением, которое динамически генерирует раскрывающийся список элементов. Сгенерированные идентификаторы варьируются от «1» до целого числа, которое вводит пользователь (0 зарезервировано для жестко запрограммированного «выбора опции»). Я хочу, чтобы javascript динамически удалял параметры, если пользователь передумал и ввел меньшее значение. Все до этого момента работает для сценария, но я не могу заставить его работать. Ниже приведен раздел, с которым у меня возникли трудности... между прочим, последний раздел, прежде чем я смогу создать более интересные части моей утилиты.
var itemSelect = document.getElementById("itemSelector");
var optionCount = itemSelect.childElementCount;
for (i = optionCount-1, n = arrayTotal.length; i < n; i++)
{
var itemSelect = document.getElementById("itemSelector");
var option = document.createElement("option");
var optionCount = itemSelect.childElementCount;
if (optionCount - 1 > totalItems)
{
for (j = optionCount, o = totalItems; o < j; j--)
{
var trash = document.getElementById("itemSelector");
trash.removeChild(trash.childNodes[j]);
}
}
else if (optionCount <= totalItems)
{
option.innerHTML = "<option> Item number"+(arrayTotal[i])+"</option>";
option.value = arrayTotal[i];
option.id = i;
itemSelect.appendChild(option);
}
}
Я создал несколько инструментов отладки для проверки определенных значений. arrayTotal[] правильно получает элементы из своей функции заполнения и динамически изменяет размер, как предполагалось. Он постоянно имеет то же значение, что и totalItems.
optionCount правильно заполняет раскрывающийся список максимальным значением, которое вводит пользователь, но раздел, который должен удалять дополнительные параметры, если пользователь вводит меньшее значение, ничего не делает. Я читал много подобных проблем и пробовал много разных методов, и я совершенно в растерянности. Есть ли что-то особенно неправильное в том, как я пытаюсь это реализовать?
Кроме того, есть ли очевидная причина, почему если я не объявлю две переменные, которые я делаю здесь, как вне цикла for, так и внутри, все сломается? Я все еще новичок в javascript, но это кажется довольно странным.
http://jsfiddle.net/CAlbano/s4mzssm1/ — это ссылка на работающую скрипку. Я включил все работы для всего сценария. Соответствующий раздел находится внизу, но таким образом вы можете видеть, что он делает. Три вывода, которые выполняются в элементе холста, — это значение последней ячейки arrayTotal[], значение totalItems и значение optionCount-1. что я хочу, так это то, что если optionCount когда-либо станет больше, чем totalItems, удалите последний дочерний элемент из этого списка до тех пор, пока optionCount == totalItems.
Оказалось, что мне действительно нужно было убрать логику обнаружения дополнительных опций — я просто не понимал, что мне говорят, и мне пришлось учиться на собственном горьком опыте.