繁体   English   中英

为什么我的JavaScript函数无法运行?

[英]Why won't my javascript function run?

从我的xml文件中检索经纬度等后,我的JavaScript在Google地图地图上绘制了不同的点。 但是,当单击一个标记时,它应该显示一个带有位置名称的信息窗口(确实如此)。 问题是没有调用函数stoptimes()来获取单击公共汽车站的时间。 我不知道为什么会这样。 我已经使用语法验证器对其进行了检查,并且它没有报告错误消息。 有什么想法吗?

function stoptimes(stop) {
  downloadiv("./times.php?stop=" + stop, function(data) {
    var xml = data.responseXML;
    var markers = xml.documentElement.getElementsByTagName("weather");

    for (var i = 0; i < markers.length; i++) {
      var name = markers[i].getAttribute("arrival");
      document.getElementById("h2").innerHTML = name;
    }
  });
}

function downloadiv(url, callback) {
  var requesta = window.ActiveXObject ?
      new ActiveXObject('Microsoft.XMLHTTP') :
      new XMLHttpRequest;

  requesta.onreadystatechange = function() {
    if (requesta.readyState == 4) {
      requesta.onreadystatechange = donada;
      callback(requesta, requesta.status);
    }
  };

  requesta.open('GET', url, true);
  requesta.send(null);    
}

function donada() {}

function load() {
  var map = new google.maps.Map(document.getElementById("map"), {
    center: new google.maps.LatLng(53.5, -8),
    zoom: 7,
  });
  var infoWindow = new google.maps.InfoWindow;
  geocoder = new google.maps.Geocoder();

  // Change this depending on the name of your PHP file
  downloadUrl("stop-locations.php", function(data) {
    var xml = data.responseXML;
    var markers = xml.documentElement.getElementsByTagName("marker");

    for (var i = 0; i < markers.length; i++) {
      var name = markers[i].getAttribute("name");
      var location = markers[i].getAttribute("name");
      var point = new google.maps.LatLng(
          parseFloat(markers[i].getAttribute("lat")),
          parseFloat(markers[i].getAttribute("lng")));
      var lat=markers[i].getAttribute("lat");
      var lng=markers[i].getAttribute("lng");
      var html = "<b>" + name + "</b> <br/>";
      var stopid = markers[i].getAttribute("stopid");
      var marker = new google.maps.Marker({
        position:point,
        map: map
      });
      bindInfoWindow(marker, map, infoWindow, html, stopid);
    }
  });
}

function bindInfoWindow(marker, map, infoWindow, html, stopid) {
  google.maps.event.addListener(marker, 'click', function() {
    infoWindow.setContent(html);
    infoWindow.open(map, marker);
    stoptimes(stopid);
  });
}

function downloadUrl(url, callback) {
  var request = window.ActiveXObject ?
      new ActiveXObject('Microsoft.XMLHTTP') :
      new XMLHttpRequest;

  request.onreadystatechange = function() {
    if (request.readyState == 4) {
      request.onreadystatechange = doNothing;
      callback(request, request.status);
    }
  };

  request.open('GET', url, true);
  request.send(null);
}

function doNothing() {}

没有调用任何函数,因此您的代码没有执行任何操作。 我想你忘了打电话给bindInfoWindow

您是否在代码中的任何地方调用load() 您是否将load()onload() ,如window.onload

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM