Показать / скрыть Google Maps API не работает нормально - PullRequest
0 голосов
/ 01 июня 2018

Когда я нажимаю на эту кнопку, я хочу, чтобы значение изменилось.Когда я это делаю, сначала он меняет текст на кнопке, но карта не появляется.после этого я повторяю процесс и код работает нормально.

function change() {
  var elem = document.getElementById("myButton1");
  if (elem.value == "Show") elem.value = "Hide";
  else elem.value = "Show";
}



function displayMap() {
  if (document.getElementById('map').style.display == "none") {
    document.getElementById('map').style.display = "block";
    initialize();
  } else {
    document.getElementById('map').style.display = "none";
  }

}
#map {
  display: none;
}
<input onclick='change(), displayMap()' type='button' value='Show' id='myButton1'></input>
<div id="map" style="width:100%; height:300px;">map</div>

Ответы [ 2 ]

0 голосов
/ 01 июня 2018

HTMLElement.style возвращает встроенный стиль (что указано в атрибуте style).

Вы можете использовать Window.getComputedStyle() так:

var map = document.getElementById('map'),
  btn = document.getElementById("myButton1");

function change() {
  if (btn.value == "Show") btn.value = "Hide";
  else btn.value = "Show";
}

function displayMap() {

  var style = window.getComputedStyle(map);

  if (style.display == "none") {

    map.style.display = "block";

    initialize();

  } else {

    map.style.display = "none";
    
    console.log('hiding');

  }

}


// Placeholder
function initialize() {
  console.log('showing map');
}
#map {
  display: none;
  width: 100%;
  height: 300px;
  background:#333;
}
<input onclick='change(), displayMap()' type='button' value='Show' id='myButton1' />
<div id="map"></div>

Вышеописанный метод подходит, но я бы выбрал более согласованный метод, такой как класс CSS, и я бы в первую очередь инициализировал карту, потому чтоспособ, которым вы реализовали, исчерпывает initialize()

0 голосов
/ 01 июня 2018

Назначить document.getElementById('map').style.display = "none"; глобально

Пожалуйста, попробуйте этот код ниже

    document.getElementById('map').style.display = "none";// this line is the solution 
    function change() {
      var elem = document.getElementById("myButton1");
      if (elem.value == "Show") elem.value = "Hide";
      else elem.value = "Show";           
    }
    function displayMap() {
      if (document.getElementById('map').style.display === "none")       {
        document.getElementById('map').style.display = "block";
       } else {
        document.getElementById('map').style.display = "none";
       }
    }

   

   
 #map {
      display: none;
    }
 <input onclick='change(), displayMap()' type='button' value='Show' id='myButton1'></input>
    <div id="map" style="width:100%; height:300px;">map</div>

Примечание: Не забудьте вызвать функцию initialize(), которая удалена из моего фрагмента

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...