【发布时间】:2019-10-27 23:14:12
【问题描述】:
我必须遍历一个数组并用它填充一个选择框,但我不想将它附加到 html 中的元素。我想将变量中的选择框用作 html。
如何将变量frm_str 中的选择框函数结果用作html。
例子:
//users array
{"users":{"48f8fd57-5116-419c-b43a-cff90a4ae39b":"lolololo","4ab9f52a-d445-4b7a-b26d-1f5bc73ea751":"koen","c1d427f2-a39e-4b20-b531-3c325de96d85":"lolololo"}}
// Setup module
// ------------------------------
var FullCalendarAdmin = function () {
//
// Setup module components
//
var _componentRender = function () {
_componentFullCalendarAdmin();
};
//
// Bootbox message
//
var _bootboxContent = function (event, users) {
var _selectUsers = function () {
var userStr = [];
jQuery.each(users, function (index, item) {
userStr.push('<option value="' + index + '">' + item + '</option>');
});
var object = $('<div/>').html(userStr).contents();
return object;
}
var frm_str = '<form action="">' +
'<div class="form-row">' +
'<label class="col-md-auto col-form-label">Description</label>' +
'<div class="col-md-8">' +
'<select>' +
_selectUsers +
'</select>' +
'</div>' +
'</div>' +
'</form>';
var object = $('<div/>').html(frm_str).contents();
return object
}
// Basic calendar
var _componentFullCalendarAdmin = function (events, users) {
// Define element
var calendarAgendaViewElement = document.querySelector('.fullcalendar-agenda-admin');
// Initialize
if (calendarAgendaViewElement) {
var calendarAgendaViewInit = new FullCalendar.Calendar(calendarAgendaViewElement, {
plugins: ['dayGrid', 'timeGrid', 'interaction'],
selectable: true,
select: function (event) {
bootbox.dialog({
title: 'Nieuwe afspraak.',
message: _bootboxContent(event, users),
buttons: {
success: {
label: 'Save',
className: 'btn-success',
callback: function () {
calendarAgendaViewInit.addEvent(eventData);
bootbox.alert({
title: 'afspraaknaam: ' + name,
message: 'Uw afspraak is toegevoegd.'
});
}
}
}
}
);
calendarAgendaViewInit.unselect();
},
});
calendarAgendaViewInit.render()
}
};
//
// Return objects assigned to module
//
return {
init: function () {
_componentRender();
}
}
}();
// Initialize module
// ------------------------------
document.addEventListener('DOMContentLoaded', function () {
FullCalendarAdmin.init();
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/fullcalendar/3.10.0/fullcalendar.min.js"></script>
<script src="https://unpkg.com/@fullcalendar/core/main.min.js"></script>
<script src="https://unpkg.com/@fullcalendar/interaction/main.min.js"></script>
<script src="https://unpkg.com/@fullcalendar/daygrid/main.min.js"></script>
<script src="https://unpkg.com/@fullcalendar/timegrid/main.min.js"></script>
<script src="https://unpkg.com/@fullcalendar/moment/main.min.js"></script>
<script src="https://unpkg.com/@fullcalendar/bootstrap/main.min.js"></script>
<script src="https://unpkg.com/@fullcalendar/timeline/main.min.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/fullcalendar/3.10.0/fullcalendar.min.css" />
【问题讨论】:
-
我给你做了一个sn-p。请用相关的 JS(示例用户)HTML 和 CSS 更新它
-
我更新了我的代码
-
这并没有使它像minimal reproducible example一样工作你能把代码减少到绝对最低限度吗?如您所见,它没有运行
-
您肯定不会在
var object = $('<div/>').html(frm_str).contents(); object.find('.openPicker').on('click', function (e) {上获得任何事件处理,因此至少处理了一个问题。我到底要做什么才能看到你在问什么?您的 sn-p 仍然出现错误 -
并且 users 应该是一个数组 - 示例不运行,示例用户没有用...请帮助我们通过创建来帮助您,我在这里重复自己一个 minimal reproducible example
标签: jquery html arrays loops ecmascript-5