2017-02-15 7 views
0

Я пытаюсь сделать это еще чище, я сократил десятки строк до этого, но мне нужно пройти через мои значения столбца/выпадающего списка и запустить их через функцию. Я путаю.Как я могу превратить это в цикл?

function populateDropdowns (dropdownObject) { 
$.ajax({ 
    url: "website eq '"+dropdownObject.column+"'", 
    type: "GET", 
    headers: { 
     "accept": "application/json;odata=verbose", 
     }, 
     success: function (data) { 
      var authOne = (data.d.results[0].Choices.results); 
      $(dropdownObject.dropdown).empty(); 
      $.each(authOne, function(i, p) { 
       $(dropdownObject.dropdown).append($('<option></option>').val(p).html(p)); 
      }); 
     }, 
     error: function (error) { 
      alert(JSON.stringify(error)); 
     } 
    }); 
} 
var dropdownObject = {}; 
dropdownObject = {column:"value1", dropdown:'#id1'}; populateDropdowns(dropdownObject); 
dropdownObject = {column:"value2", dropdown:'#id2'}; populateDropdowns(dropdownObject); 
dropdownObject = {column:"value3", dropdown:'#id3'}; populateDropdowns(dropdownObject); 
dropdownObject = {column:"value4", dropdown:'#id4'}; populateDropdowns(dropdownObject); 
dropdownObject = {column:"value5", dropdown:'#id5'}; populateDropdowns(dropdownObject); 
+0

Loop от 1 до 5 и использования concatenation –

ответ

0

Если ваши значения зафиксированы до 5, тогда цикл for должен работать нормально.

for(var i = 1; i < 6; i++){ 
    populateDropdowns({column : "value" + i, dropdown:'#id' + i}); 
} 

EDIT 1: Если значения не являются последовательными, то вы можете передать массив объектов к forEach цикла.

var dropdowns = [ 
    {column: "value1", dropdown: "#id1"}, 
    {column: "value2", dropdown: "#id2"}, 
    {column: "value3", dropdown: "#id3"}, 
    {column: "value4", dropdown: "#id4"}, 
    {column: "value5", dropdown: "#id5"} 
; 

dropdowns.forEach(dropdown => populateDropdowns(dropdown)); 
+0

Я ценю ваш ответ, но я должен был указать, что эти значения не являются последовательными. Все они уникальны. – Ryan

+0

Можете ли вы публиковать истинные имена и идентификаторы или правило для обнаружения.them? – Massimo

+0

Обновлен код в соответствии с вашими комментариями. – Agalo

0

Если вы хотите перебрать некоторые данные, данные должны, вероятно, будет в массиве:

const dropdownObjects = [ 
    { column: 'value1', dropdown: '#id1' }, 
    { column: 'value2', dropdown: '#id2' }, 
    { column: 'value3', dropdown: '#id3' }, 
    // ... 
]; 

for (var i = 0; i < dropdownObjects.length; i++) { 
    populateDropdowns(dropdownObjects[i]); 
} 

Или, более кратко:

dropdownObjects.forEach(populateDropdowns); 
+0

Спасибо, это отличный ответ. – Ryan