Javascript Google Maps Очистка HTML после сброса карты - PullRequest
0 голосов
/ 02 августа 2011

Мне нужно очистить DIV, созданный с помощью функции карт Google. Есть два HTML DIV. DIV, с которым у меня проблемы - это MarkerCount

 <div id="sidebar"></div>
 <div id="MarkerCount"></div>

 function createMarkerCount(count) {
 var div = document.createElement('div');
 var html = "Results: " + count + " Facilities";
 div.innerHTML = html;
 div.style.marginBottom = '5px'; 
 return div;
 }

Это создается, когда маркеры возвращаются на карту Google. Это в основном выполняет подсчет количества записей, отображаемых в настоящее время на карте. Эта функция отлично работает.

Вот моя функция для сброса карты и очистки маркеров и другого innerhtml DIV, называемого боковой панелью:

function clearLocations() {
infoWindow.close();
for (var i = 0; i < markers.length; i++) {
markers[i].setMap(null);
}
markers.length = 0; 
sidebar.innerHTML = "";
 map.setCenter(new google.maps.LatLng(36.1611, -116.4775), 6);
}

Эта функция работает просто отлично. Теперь, когда я хочу очистить MarkerCount, Я попытался добавить следующую строку в функцию clearLocations ()

MarkerCount.innerHTML = "";

Однако, когда страница сначала загружается и вы выполняете поиск, функция clearLocations () вызывается до того, как поиск начат, потому что в настоящее время нет innerhtml, созданного для функции CreateMarker. это возвращает ошибку, которая утверждает, что CreateMarker имеет значение NULL, поскольку там ничего нет.

То есть, то, что sidebar.innerhtml очищается очень хорошо, но когда я добавляю строку кода для очистки DIV CreateMarker.innerhtml, я получаю сообщение об ошибке. Не уверен, почему это может происходить ....

РЕДАКТИРОВАТЬ - функция, чтобы показать, как CountMarker получает счет

var markercountEntry = createMarkerCount(markerNodes.length);
MarkerCount.appendChild(markercountEntry); 

1 Ответ

1 голос
/ 02 августа 2011

Похоже, у вас проблемы с установкой innerHTML для элемента, который еще не определен в вашей функции clearLocations(). Я предлагаю вам разобраться со случаем, когда CreateMarker или MarkerCount еще не определены.

Что-то вроде:

function clearLocations() {
   if(CreateMarker && CreateMarker.innerHTML)
      CreateMarker.innerHTML = "";
   infoWindow.close();
   for (var i = 0; i < markers.length; i++) {
     markers[i].setMap(null);
   }
   markers.length = 0; 
   sidebar.innerHTML = "";
   map.setCenter(new google.maps.LatLng(36.1611, -116.4775), 6);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...