【发布时间】:2017-05-27 11:31:15
【问题描述】:
我想格式化弹出窗口的内容,以便完全删除 null 值。此时,我的弹出窗口中填充了features.properties 数组。 properties 中有 20 个元素,根据查询的功能,其中许多值将是 null。
var feature = features[0];
// Populate the popup and set its coordinates
// based on the feature found.
popup.setLngLat(feature.geometry.coordinates)
.setHTML('<div><b>' + feature.properties.city + '</div></b>' + '<div>'
+ feature.properties.course1 + '</div>' + '<div>'+
feature.properties.course2 + '<div>' + feature.properties.course3 + '</div>')
.addTo(map);
此时,带有一些 null 值的示例弹出窗口如下所示:
我的目标是消除null 值,而不是在弹出窗口中显示它们。
到目前为止,我已经尝试了 JSON.stringify 选项,而不是在单独的 <div> 元素中列出每个元素。
function replacer(key, value) {
// Filtering out properties
if (value === "null" || value === null) {
return undefined;
}
return value;
}
JSON.stringify(feature.properties, replacer, "\t").replace(/\"/g, "").replace(/,/g, "")
这会产生所需的结果,但格式是问题。
即使将 JSON 对象包含在 <pre> 标记中,它也无法在弹出窗口中很好地显示,这会产生:
我想知道是否有解决方案来格式化我的弹出窗口,使其看起来像第一张图片 - 但不包括空值。通过列出所有属性元素(course1、course2、course3 等...) 没有 产生一堆空的<div>,如何做到这一点是html年代?
【问题讨论】:
-
这是一个基本的方法:jsfiddle.net/hjyfhm2y
-
感谢@ChrisG,但我刚刚尝试了该函数,但它仍在产生空值 - 我认为因为空值是带有
"null"的字符串 -
在这种情况下:jsfiddle.net/hjyfhm2y/1
-
这行得通!例如,如何排除一个名为
field_1的键或另一个键?你能添加那个更新吗?如果您提交答案,我可以将其标记为正确。谢谢@ChrisG!
标签: javascript html popup mapbox