我有两个错误,任何人都可以帮我找到它们吗?

时间:2015-12-08 11:48:47

标签: javascript

我遇到两个错误:

  

TypeError:window.geoTest不是函数

     

SyntaxError:missing;在陈述之前

这些错误意味着什么?我无法看到我错过了分号的位置。 window.geoTest不是函数意味着什么?



"use strict";

var waitForUser;

function geoTest() {
	waitForUser = setTimeout(fail, 10000);
	if (navigator.geolocation) {
		navigator.geolocation.getCurrentPosition(createMap, fail, {timeout: 10000});
	} else {
		fail();
	}
}

function createMap(position) {
	clearTimeout(waitForUser);
	var Lat = position.coords.latitude;
	var Lng = position.coords.longitude;
	var mapOptions {
		center: new google.maps.LatLng(Lat, Lng), 
		zoom: 10
	};
	var map = new google.maps.Map(document.getElementById("map"), mapOptions);
}

function fail() {
	document.getElementById("map").innerHTML = "Unable to access your current location";
}

<body>
   <header>
      <h1>
         Hands-on Project 10-3
      </h1>
   </header>

   <article>
      <div id="cities">
         <div id="beijing">Beijing</div>
         <div id="paris">Paris</div>
         <div id="rio">Rio de Janeiro</div>
      </div>
      <div id="caption">
         Your location
      </div>
      <div id="map"></div>
   </article>
  <script src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=true&callback=geoTest"></script>
  <script src="script.js"></script>
</body>
</html>
&#13;
&#13;
&#13;

3 个答案:

答案 0 :(得分:1)

请更正此信息,您错过了&#34; =&#34;

var mapOptions {
    center: new google.maps.LatLng(Lat, Lng), 
    zoom: 10
};

var mapOptions = {
    center: new google.maps.LatLng(Lat, Lng), 
    zoom: 10
};

答案 1 :(得分:1)

  

SyntaxError:missing;在陈述之前

此错误是由以下代码段引起的:

var mapOptions {
    center: new google.maps.LatLng(Lat, Lng), 
    zoom: 10
};

因为您错过了赋值运算符=

var mapOptions = {
    center: new google.maps.LatLng(Lat, Lng), 
    zoom: 10
};

这应该是一个非常简单的错误,即使错误说您错过了;,因为错误通常会提供错误发生的行号。另一件事是,通常会抛出任何语法错误,通常非常接近语法错误的位置。所以,当我看到一个错误时,我通常会这样做,因为我发现任何语法错误。

  

TypeError:window.geoTest不是函数

我想说明我不知道你是否正确使用google maps api,但我相信这个错误是因为你正在使用一个尚未创建的函数(换句话说,一个变量未定义为函数或未定义的变量用作函数)。所以,在这里你需要去你使用该功能的地方,就在这里:

<script src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=true&callback=geoTest"></script>

在加载定义函数的script.js之前。要解决这个问题,请将script标记的位置换成:

<script src="script.js"></script>
<script src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=true&callback=geoTest"></script>

现在,将为回调定义该函数。

答案 2 :(得分:0)

如果您希望在https://maps.googleapis.com/maps/api/js中调用geoTest(),则必须在https://maps.googleapis.com/maps/api/js中使用代码来调用它。它只是因为你把它放在URL中而不会被调用。您需要将代码解析出URL,然后调用它。

或者,您也可以在脚本加载完成后挂接通知,并在https://maps.googleapis.com/maps/api/js完全加载后,在https://maps.googleapis.com/maps/api/js之外自己致电geoTest()

检测外部脚本文件何时成功加载并自行调用geoTest()

供参考点击here