arcgis api for js view.ui.add问题

如图,在地图加载时向UI添加两个div,其中一个内容为label,另一个内容为控制第一个div显示和隐藏的按钮。
加载完毕后两个div都成功加载,现在点击隐藏按钮,清空UI上右下角的所有填充物,也成功了
问题出在下一步点击显示按钮的时候,会报错:Failed to execute 'appendChild' on 'Node': parameter 1 is not of type 'Node'.
那为什么第一次加载时没出错呢
希望大家指教,谢谢

14B1B3CC-4285-4029-B1DC-FC077A5E4095.png
<html>
<head>
<meta name="description" content="ArcGIS JavaScript Tutorials: Query a feature layer">
<meta charset="utf-8">
<meta name="viewport" content="initial-scale=1,maximum-scale=1,user-scalable=no">
<title>featurelayer </title>
<style>
html,
body,
#viewDiv {
padding: 0;
margin: 0;
height: 100%;
width: 100%;
}
</style>

<link
rel="stylesheet"
href="https://js.arcgis.com/4.16/esr ... ot%3B
/>
<script src="https://js.arcgis.com/4.16/%26 ... gt%3B
<script>
require([
"esri/Map",
"esri/views/MapView",
"esri/layers/FeatureLayer",
"esri/layers/GraphicsLayer",
"esri/Graphic",
"esri/tasks/QueryTask",
"esri/tasks/support/Query"
], function (Map, MapView, FeatureLayer, GraphicsLayer, Graphic, QueryTask, Query) {
var map = new Map({
basemap: "streets"
});
var view = new MapView({
container: "viewDiv",
map: map,
center: [-118.71511, 34.09042],
zoom: 5
});

view.when(function () {
view.ui.add("optionsDiv", "bottom-right");
view.ui.add("btn", "top-left");

document.getElementById("show").addEventListener("click", show);
document.getElementById("hide").addEventListener("click", hide);

});

function show() {
view.ui.add("optionsDiv", "bottom-right");
}
function hide() {
view.ui.empty("bottom-right");
}


});
</script>
</head>
<body>
<div id="viewDiv"></div>
<div class="esri-widget" id="optionsDiv">
<label>test</label> <br />
</div>
<div id="btn">
<button id="show">显示</button>
<button id="hide">隐藏</button>
</div>
</body>
</html>
已邀请:

谢军

赞同来自: 惹不起_溜了

view.ui.empty()方法执行后,document中已经没有optionsDiv dom节点了,你要用javascript创建新的dom节点,然后再使用view.ui.add()方法。
如果要反复隐藏和显示,增删dom节点不是好方法,最好直接修改dom的css,设置document.getElementById("optionsDiv").style.display 为 “none”或者 "block"。

要回复问题请先登录注册