javascript - 如何动态插入HTML代码?

标签 javascript jquery html

有 2 种类型(个人和公司)。我成功地为个人编写了代码,但现在我想为公司做同样的事情。

所以我尝试使用

<%
    for(int k=0;k<clientTypes.length;k++) {
%>

在顶部制作与“Individual”中完全相同的内容。

我的问题是,在公司时,id 日期月-年 在我的 JavaScript 中不起作用。这是有道理的,因为我不能重复 id(对吗?)。那么如何动态添加这个呢? clientTypes 可以扩展。

<div class="row types" style="margin-top: 10px;">
    <ul class="nav nav-pills nav-justified">
        <%
            String[] clientTypes = {"Individual","Corporation"};

            for(int k=0;k<clientTypes.length;k++) {
        %>
        <li><a data-toggle="tab" id="typeTab" name="type" href="#<%=clientTypes[k]%>"><%=clientTypes[k]%></a></li>
        <%
            }
        %>
    </ul>
</div>
    <div class="row" style="margin-top: 30px;">
    <div class="tab-content">
        <%
            for(int k=0;k<clientTypes.length;k++) {
        %>
        <div id="<%=clientTypes[k]%>" class="tab-pane fade in active">
            <div class="col-md-6">
                <div class="row">
                    <%
                        String initialDayEnd = session.getAttribute("initialDayEnd").toString();
                        String finalDayEnd = session.getAttribute("finalDayEnd").toString();

                        DateFormat format = new SimpleDateFormat("dd/MM/yyyy", Locale.US);

                        Calendar beginCalendar = Calendar.getInstance();
                        Calendar finishCalendar = Calendar.getInstance();

                        try {
                            beginCalendar.setTime(format.parse(initialDayEnd));
                            finishCalendar.setTime(format.parse(finalDayEnd));
                        } catch (ParseException e) {
                            e.printStackTrace();
                        }
                        List<String> dateList = new ArrayList<String>();
                        List<String> dateListMonthYear = new ArrayList<String>();
                        String[] dateSplitted;
                        while (beginCalendar.before(finishCalendar)) {
                            // add one month to date per loop
                            String date = format.format(beginCalendar.getTime()).toUpperCase();
                            System.out.println(date);
                            beginCalendar.add(Calendar.MONTH, 1);
                            dateSplitted = date.split("/");
                            dateList.add(dateSplitted[0] + "/" + dateSplitted[1] + "/" + dateSplitted[2]);
                            dateListMonthYear.add(dateSplitted[1] + "/" + dateSplitted[2]);

                        }
                    %>
                        <label>Date:</label>
                        <select id="dates" name="dates">
                            <%
                                for (int i=0;i<dateList.size();i++) {
                            %>
                            <option value="<%=dateList.get(i)%>"><%=dateListMonthYear.get(i)%></option>
                            <%
                                }
                            %>
                        </select>
                    </div>
                <div class="row" style="margin-top: 20px">
                    <h1 id="month-year"></h1>
                </div>
            </div>
            <div class="col-md-6">
                <label>Repeat For All:</label>
                <input class="inline-block text-center" type="number" id="repeatForAll" value="0">
            </div>
        </div>
        <%
            }
        %>
    </div>
    </div>

JavaScript

  $('#dates').change(DatesChanged);
    DatesChanged();

   function DatesChanged() {
       var date = $('#dates').val();
       var splitDate = date.split("/");
       day = splitDate[0];
       month = splitDate[1];
       year = splitDate[2];
       var maxDays = daysInMonth(month, year);
       var array = CreateJSONArray(maxDays, date);
   }
function DisplayTable(data) {

        //heading
        document.getElementById("month-year").innerHTML = data[0].monthName + ", " + data[0].year;

        //Table
        $('#dayTableBody').empty();
       $.each(data, function(key,value) {
           data += '<tr align="center">';
           data += '<td>' + value.dayNumber + '<input type="hidden" name="dayNumber" value="'+value.dayNumber +'">' + '</td>';
           data += '<td>' + value.dayName + '</td>';
           data += '<td>' + '<input class="text-center" type="number" value="0" id="numberOfClients" name="amountOfClients"> ' + '</td>';
           data += '</tr>';
       });
       $('#dayTableBody').append(data);

    }

最佳答案

使用 id="dates-<%=clientTypes[k]%>"和 id="month-year-<%=clientTypes[k]%>"

在 javascript 中,使用 class 而不是 id。

<select id="dates" name="dates" class="dates">

并在 JavaScript 选择器中使用

$('.dates')

而不是

$('#dates')

关于javascript - 如何动态插入HTML代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46647418/

相关文章:

javascript - 如何将数组中的值添加到对象?

html - 如何删除按钮之间的多余空间?

javascript - 如何定义 JavaScript 中的出现次数?

javascript - 如何正确使用父元素

jquery - 带有淡入/淡出的简单 jQuery 幻灯片

javascript - ng-click 与点击事件

javascript - 获取点击元素的同级元素并removeClass纯javascript或没有指令的 Angular js

javascript - jQuery 按类过滤 div

javascript - flexbox javascript从cms动态加载

javascript - 在带有母版页的 Web 表单上使用 JavaScript 访问服务器控件?