Javascript 用另一项研究刷新传单地图

Javascript 用另一项研究刷新传单地图,javascript,leaflet,refresh,Javascript,Leaflet,Refresh,我正在刷新传单地图!我阅读了文档并在互联网上查找,但我找不到解决方案 我尝试了很多方法,比如map.remove()或map.viewsete,或者其他在这里或文档中阅读的解决方案 很明显,我希望当用户进行新搜索时(通过输入新编号并单击按钮),地图会发生变化,并且如果编号未输入,地图将不再可见,返回状态200(因此它不是一个14位的序列,或者该序列在API中不存在) 谢谢你的帮助:) index.php: <body> <form id="fo

我正在刷新传单地图!我阅读了文档并在互联网上查找,但我找不到解决方案

我尝试了很多方法,比如map.remove()或map.viewsete,或者其他在这里或文档中阅读的解决方案

很明显,我希望当用户进行新搜索时(通过输入新编号并单击按钮),地图会发生变化,并且如果编号未输入,地图将不再可见,返回状态200(因此它不是一个14位的序列,或者该序列在API中不存在)

谢谢你的帮助:)

index.php:

    <body>
        <form id="form">
            <label for="sic" class="sic"> Numéro de SIRET : </label>
            <input type="text" id="sic" name="texte"/>
            <input type="submit" value="envoyer" id="valider" class="send"/>
        </form>
        <p id="result"></p>
        <div id="mapid"></div>
        <script src="script.js"></script>
    </body>

通常的行为是将地图重新居中,而不是删除它,然后再次将其添加到页面中。但是,正确的方法是使用
map.remove()
删除映射。我认为这对你不起作用,因为你在创建新地图之前不会这样做。(我认为是因为map变量不是全局变量)

因此,将其更改为:

form.addEventListener('submit',(ev) => {
    ev.preventDefault();
    if(map && !mapRemoved){
        map.getContainer().style.display = "none";
        map.remove(); // <-- remove the map
        mapRemoved = true;
        
    }
    let saisi = document.getElementById('sic').value;
    if(isNaN(saisi) || saisi.length != 3){
        document.getElementById('result').textContent = "Veuillez rentrer un numéro SIRET valable (14 chiffres)";
        document.getElementById('sic').value = '';
    }else{
        document.getElementById('result').innerHTML = '';
        fonctionTest(saisi);
    }
})




let mapRemoved = false;
let map; // <-- global map variable
function addCoor(){
   map = L.map('mapid').setView([42, 12.46], 14);
   map.getContainer().style.display = "block";
   mapRemoved = false;
   L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png').addTo(map);
}
form.addEventListener('submit',(ev)=>{
ev.preventDefault();
如果(映射&映射已删除){
map.getContainer().style.display=“无”;

map.remove();//是的,在第一次加载时,变量
map
没有定义。我更新了应答始终相同的错误:未捕获错误:未找到映射容器。您的代码是否与我的应答中的代码完全相同?您的错误应该是不可能的。您的错误意味着,您没有id为
mapid
的html元素,但您有
对不起……我的错……我处理了HTML部分,但没有关闭一个插件。如果用户没有输入14位数字,我只需要找到一种方法来删除卡片。我尝试了以下方法:
if(isNaN(saisi)| | saisi.length!=14){document.getElementById('result')。textContent=“Veuillez renterr un numéro SIRET valable(14 chiffres)”;map.remove();document.getElementById('sic')。值=“”;}
事实上,我还有一个问题。如果用户没有输入14位数字,我会收到错误消息,但地图仍保留在上一次搜索中。此外,如果用户更正了错误并正确输入了14位数字,错误消息仍会出现。我必须进行硬刷新(ctrl+F5)才能使脚本再次工作
form.addEventListener('submit',(ev) => {
    ev.preventDefault();
    if(map && !mapRemoved){
        map.getContainer().style.display = "none";
        map.remove(); // <-- remove the map
        mapRemoved = true;
        
    }
    let saisi = document.getElementById('sic').value;
    if(isNaN(saisi) || saisi.length != 3){
        document.getElementById('result').textContent = "Veuillez rentrer un numéro SIRET valable (14 chiffres)";
        document.getElementById('sic').value = '';
    }else{
        document.getElementById('result').innerHTML = '';
        fonctionTest(saisi);
    }
})




let mapRemoved = false;
let map; // <-- global map variable
function addCoor(){
   map = L.map('mapid').setView([42, 12.46], 14);
   map.getContainer().style.display = "block";
   mapRemoved = false;
   L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png').addTo(map);
}