2017-02-15 91 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

循环,从1至5和使用串联 –

回答

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

你可以发布真实姓名和ID或检测他们的规则吗? – 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

相关问题