Ошибка при добавлении параметров в меню выбора с помощью JavaScript - PullRequest
0 голосов
/ 26 ноября 2018

У меня были две проблемы: первая - это то, что javascript не добавляет опции в меню, а вторая - ошибка «Неожиданный или недействительный токен» в конце цикла for.

Обновление: Ошибка токена была странной вещью символа.Я удалил строку, которая вызывала проблему, и снова ее набрал, и теперь я больше не получаю сообщение об ошибке, но мой сценарий по-прежнему не добавляет параметры.

Я читал о добавлении параметров в меню выбора, но ответы на нихЯ обнаружил, что там не работает для меня.Я должен отметить, что это часть веб-сайта Joomla (v3.8), потому что это может вызвать непредвиденное поведение.

У меня есть функция, которая должна выбирать определенное меню выбора на основе строки«id», очистить его содержимое и заново заполнить его элементами массива «options».

function resetSelectMenu(id, options){
    // Selects the correct menu, enables it, and removes all of its options. 
    var selectMenu = jQuery('#sel-' + id);
    selectMenu.prop('disabled', false);
    selectMenu.empty();        
    // Makes an option element and sets its text and value.
    var el = document.createElement("option");
    el.text = 'blah';
    el.value = 'blah';
    // Does not succeed in adding an option to menu.
    selectMenu.add(el);

    // I declared loop variables here to make sure there are no re-declaration issues.
    var i;
    var opt;
    // The loop is entered and the array is iterated through.
    for(i = 0; i < options.length; i++){
        opt = options[i];
        el = document.createElement("option");
        el.text = opt;
        el.value = i + 1;
        // Does not succeed in adding an option to menu.
        selectMenu.add(el);
    }​

}

Функция нацеливается на правильное меню и очищает его содержимое, но не добавляетопция "blah" или что-нибудь из массива "options".Я попытался использовать «appendChild (el)» вместо add, но я получаю сообщение об ошибке «appendChild () не является функцией».Я сделал много консольных журналов, чтобы определить, что все части кода работают должным образом, кроме «selectMenu.add (el);»

1 Ответ

0 голосов
/ 27 ноября 2018

Так что это была просто ошибка нуба.Я выглядел немного сложнее и нашел этот связанный вопрос , и главный ответ Мэтта сказал мне, что мне нужно использовать append(el) вместо add(el).Я изучил документацию и метод add просто влияет на объект jQuery, но на самом деле не влияет на DOM, в то время как append влияет.Если бы я использовал add, мне бы пришлось явно указать объекту jQuery обновить DOM.

Также возможно, что у меня все еще есть проблема с использованием selectMenu.empty() вместо чего-то вроде selectMenu.find('option').remove(), но на данный момент это не вызывает никаких ошибок.Поскольку мой элемент select содержит только элементы option, я чувствую, что эти две команды будут одинаковыми, но, с другой стороны, может быть, последняя лучше, потому что она позволяет добавлять различные виды элементов позже.

...