【问题标题】:Append returned api data to a table将返回的 api 数据追加到表中
【发布时间】:2021-07-24 14:53:56
【问题描述】:

我正在尝试从公共假期 API 返回一些信息,并将其显示在传单地图上、表格内、弹出窗口中。

弹出窗口正在运行,数据在控制台中正确显示,但在弹出窗口本身中却没有。我的代码没有达到预期的效果,即在表格中添加每个公共假期的日期和名称的新行(此信息会根据地图显示的国家/地区而有所不同)。

有什么建议/我缺少什么吗?

与此相关的部分:

success: function(result) {
    
                console.log(result);
            
                if (result.status.name == "ok") {
                    
                    var countryHolidays = [];
        
                    $.each(result.data, function(index, value){
                        
                        if (value.location){
                            var newLocation = value.location.join();
                            countryHolidays.push({ name: value.country, date: value.date, location: newLocation});
                        } else {
                            countryHolidays.push({ name: value.country, date: value.date, location: "Nationwide"});
                        }
                        
                    });
                    
                        var info =
                        `
                        <div id="holidays-div" class="bg-success mx-0 my-0 px-1 py-1">
                        <table id="holidays-table" class="table table-striped table-responsive border-0 rounded-12px mx-0 my-0 px-0 py-0">
                        <thead class="bg-success text-white">
                            <th colspan="2">Public Holidays</th>
                        </thead>
                        <tbody>
                            <tr><td>Name</td><td>Date</td></tr>
                            
                        </tbody>
                        </table>
                        </div>
                        `
                        
                        countryHolidays.forEach((element) => {
                            
                            $('#holidays-table tr:last').append("<tr><td>" + element.name + "</td><td>" + element.date + "</td></tr>");
                    
                        });

                        holidayMarker.addLayer(L.marker([$('#lat').text(), $('#lng').text()], {icon: holidayicon}).bindPopup(info));
                                    };
                                        
                        mymap.addLayer(holidayMarker);  
                        

            }, ...

【问题讨论】:

  • 您的表仍未添加到 dom 中,您正在使用 $('#holidays-table tr:last') ?

标签: javascript jquery bootstrap-4 leaflet popup


【解决方案1】:

嗯,你指的是一个甚至还没有生成的元素。试着先做桌子。

$('#holidays-table tr:last').append("" + element.name + "" + element.date + "");

在上面的部分中,您希望在假期表中添加一些内容,但与此同时该表甚至不存在(您将元素存储在名为 info 的变量中)。因此,首先,在 DOM 中添加这个(比如将它附加到主体),然后使用它进行操作。这是一个例子

$("body").append(info)
$('#holidays-table tr:last').append(...

在此之后,您可以附加任何您想要的内容(例如循环中的内容)。希望能帮上忙!

【讨论】:

  • 感谢您的帮助 - 这对我来说可以在页面正文的底部添加一个表格,但我需要该表格位于弹出窗口内
  • 这只是一个例子。替换附加标签的目标。关键是您必须先生成 info,然后再对它进行任何操作。 1. 创建/附加弹出窗口。 2. 创建/追加表格到弹出窗口。 3. 在表中创建/追加行。顺序很重要!根据您的代码,您在尚未附加的表中创建了行,因此基本上您想将其添加到甚至不存在的东西中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-03-22
  • 2014-04-28
  • 2010-12-27
  • 1970-01-01
  • 2022-01-24
  • 1970-01-01
  • 2012-09-14
相关资源
最近更新 更多