Как добавить & lt; option & gt; теги к & lt; select & gt; в цикле for?

Я использую jersey 2.0 с читателями и авторами сообщений. У меня был тип возвращаемого метода как конкретный объект, который также использовался в реализации автора сообщения сообщения, и я возвращал то же самое pojo, SkuListDTO. @GET @Consumes ({"application / xml", "application / json"}) @Produces ({"application / xml", "application / json"}) @Path ("/ skuResync")

public SkuResultListDTO getSkuData()
    ....
return SkuResultListDTO;

все, что я изменил, это то, что я оставил выполнение записи самостоятельно, и он все еще работал.

public Response getSkuData()
...
return Response.status(Response.Status.FORBIDDEN).entity(dfCoreResultListDTO).build();
2
задан legoMyEgo 13 July 2018 в 19:37
поделиться

2 ответа

var i = 1; 
var option1 = 'test';
var option2 = 'test2';
var number = eval("option"+parseInt(i+1, 10)); 
console.log(number);

Вот он работает ... https://jsfiddle.net/ucp9jgnh/1/ Должен сделать трюк ... Не лучший способ это сделать, но это будет по крайней мере, работа

В этом примере опция2 является ответом ...

parseInt (i + 1, 10) ... эта часть будет убедиться, что это i (ваш цикл) +1 в математическом формате. Затем он добавляет это в текст «option», а eval () затем позволяет JS рассматривать его как переменную вместо строки.

Если вы измените var i = 0, вместо него будет выводиться «test» вместо «test2» из-за математики.

Вот что вы делали бы внутри своей петли ... Должно работать как есть:

var appendedThing = eval("option"+parseInt(i+1, 10));
item.appendChild(appendedThing);
1
ответ дан Nerdi.org 17 August 2018 в 12:11
поделиться

Одним из вариантов было бы создание массива таких параметров: https://codepen.io/anon/pen/jpbKBx

//Javascript
    function myFunction () {

        //get value of selected <option> in a separate <select> drop down
        var type = document.getElementById('_first').value;
        //get the second <select>
        var item = document.getElementById('_second');

        //Clear child nodes from dynamic <select>
        while (item.hasChildNodes()) {
            item.removeChild(item.lastChild);
        }

        //set count variable to know how many <options> there should be in second <select> drop down
        var count;
        var options = [];
        //assess value
        switch (type) {
            case '1': //First case
                var option1 = document.createElement('option');
                    option1.text = 'SomeText1';
                options.push(option1);
                break;
            case '2': //Second case
                var option1 = document.createElement('option');
                    option1.text = 'SomeText2';
                options.push(option1);
                var option2 = document.createElement('option');
                    option2.text = 'SomeText3';
                options.push(option2);
                break;
            case '3': //Third case
                var option1 = document.createElement('option');
                    option1.text = 'SomeText4';
                options.push(option1);
                var option2 = document.createElement('option');
                    option2.text = 'SomeText5';
                options.push(option2);
                var option3 = document.createElement('option');
                    option3.text = 'SomeText6';
                options.push(option3);
                break;
        }

        //populate select menu
        for (var i = 0; i < options.length; i++) {
            //how can I do this part?
            item.appendChild((options[i]));
        }
    }
2
ответ дан Bensmind 17 August 2018 в 12:11
поделиться
  • 1
    Я только получил награду, но я просто хотел сказать, что этот ответ от Bensmind также является законным и рекомендуемым вариантом. Он меняет структуру кода OP, но эффективный способ сделать это. Если бы было сотни вариантов, код Бена был бы быстрее моего, я считаю - если не быстрее (для запуска, а не для кода). – Nerdi.org 13 July 2018 в 20:21
  • 2
    Я не имел в виду ничего личного, это просто то, что ваш ответ подойдет ко мне. Я не могу подойти к этой проблеме с использованием массива в качестве решения, но это определенно сработает. Просто не для моей ситуации. Все замечательные ответы, спасибо – legoMyEgo 16 July 2018 в 13:29
Другие вопросы по тегам:

Похожие вопросы: