未捕获没有元素定义?

时间:2015-05-07 16:29:33

标签: javascript jquery css google-maps gmaps4rails

我正在使用gmaps.js。我收到Uncaught ReferenceError: gmaps.js:205 Uncaught No element defined.以下屏幕截图显示了Chrome如何报告gmaps Javascripts中的错误:

但我在 jsfiddle 中确实如此,但我的localhost(XAMPP)问题上的代码相同。

enter image description here

    var map = new GMaps({
    el: '#map',
    lat: -12.043333,
    lng: -77.028333,
    click: function(event) {
        map.removeMarkers();
        var lat = event.latLng.lat();
        var lng = event.latLng.lng();
        alert(lat + ', ' + lng);
        map.addMarker({
            lat: lat,
            lng: lng,
            draggable: true,
        });
    }
});
$('select,input').change(function() {
    var searchString = [$('select.Country').val(), $('select.Cities').val(), $('input#SearchDistrict').val()].join(', ');
    alert(searchString);
    GMaps.geocode({
        address: searchString.trim(),
        callback: function(results, status) {
            if (status == 'OK') {
                var latlng = results[0].geometry.location;
                map.setCenter(latlng.lat(), latlng.lng());
                map.addMarker({
                    lat: latlng.lat(),
                    lng: latlng.lng()
                });
            }
        }
    });

});
#map {
      width: 400px;
      height: 400px;
    }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="http://maps.google.com/maps/api/js?sensor=true"></script>
  <script src="https://hpneo.github.io/gmaps/gmaps.js"></script>
<form>
    Country:
    <select class="Country">
        <option value="" selected="selected"></option>
        <option value="United States">United States</option>
    </select>
    Cities:
    <select class="Cities">
        <option value="" selected="selected"></option>
        <option value="New York">New York</option>
    </select>
    District:
    <input type="text" id="SearchDistrict">
</form>
        <div class="popin">
          <div id="map"></div>
        </div>

我无法解决这个问题,所以我需要你的支持。我该怎么办?

3 个答案:

答案 0 :(得分:2)

我测试了脚本,它运行正常。只有在您创建地图时<div id="map"/> 存在时,您才会看到错误。

你应该做的是在中将地图容器插入DOM树后调用地图创建脚本

答案 1 :(得分:0)

$(document).ready(function(){
  var element =  document.getElementById('map');
    if (typeof(element) != 'undefined' && element != null)
  {
    map = new GMaps({
    div: '#map',
    zoom:,
    lat:,
    lng: ,
  });
  }
});

答案 2 :(得分:0)

我也遇到了这个问题而且我注意到它们是直接找到节点并且串行调用该函数,问题是上面的元素没有发现它不会进一步编译/运行。

mapBasic();
mapMarker();
mapGeolocation();
mapGeocoding();
mapPolylines();
mapPolygone();
mapRoutes();

因此,在我们的情况下,如果找不到mapBasic元素,则不执行其他代码。

希望它可以帮到你。