【发布时间】:2017-11-23 14:08:19
【问题描述】:
我试图从使用onEachFeature 函数提取的geojson 中获取一个表,它可以通过警报显示它,但我尝试getElementsByClassName 将它放入一个Div 但没有显示
我正在使用带有传单侧边栏插件的传单
谢谢
var tbl1 = "";
var proy = L.geoJSON(json_Obras, {
onEachFeature: function(feature, layer) {
tbl1 = '<table><tr><th scope="row">OBRA </th><td>' + (feature.properties['OBRA'] !== null ? Autolinker.link(String(feature.properties['OBRA'])) : '') + '</td></tr>'
}
}).addTo(map);
proy.on('click', function () {
sidebar.show();
})
map.on('click', function () {
sidebar.hide();
});
document.getElementsByClassName('t1').innerHTML = tbl1;
点击按钮显示 div
<input id="btn" class="gral" type="button" name="answer" value="DATA" />
<div id="tabla" class="t1" style="display:none;">
</div>
jquery 点击函数
$('.gral').click(function() {
$('.t1').toggle('slow', function() {
});
});
更新
根据previous question,我设法找出了如何做到这一点:
var sidebar = L.control.sidebar('sidebar', {
closeButton: false,
position: 'left'
});
map.addControl(sidebar);
var ptsty = {
radius: 8,
fillColor: "#ff7800",
color: "#000",
weight: 1,
opacity: 1,
fillOpacity: 0.8
};
function onEachFeature(feature, layer) {
layer.on({
click: openSidebar
});
}
var lay1 = L.geoJson(json_Obras,{
pointToLayer: function (feature, latlng) {
return L.circleMarker(latlng, ptsty)
},
onEachFeature: onEachFeature
}).addTo(map);
function openSidebar(e) {
sidebar.toggle();
sidebar.setContent('<div id="sidebarin"><h2>' + e.target.feature.properties.OBRA + '</h2></div>');
}
【问题讨论】:
-
你生成的表格是错误的。在每次迭代中,您都将整个表分配给 tbl1 变量。
-
你是对的,有什么建议吗?
-
在切换回调中检查 div 是否显示然后放置 document.getElementsByClassName('t1').innerHTML = tbl1;否则为空;
标签: javascript jquery html