Javascript错误 - 看不到错误

时间:2016-05-11 19:54:40

标签: javascript

我有以下javascript。错误报告在第14和22行;说第14行中的“参数列表后面有”Uncaught SyntaxError:missing)和第22行中的“Uncaught ReferenceError:init未定义”。

<html>
 <head>
  <title>OpenLayers Demo</title>
   <script src="http://www.openlayers.org/api/OpenLayers.js"></script>
   <script>
    function init(){
        map = new OpenLayers.Map("basicMap");
        var mapnik = new OpenLayers.Layer.OSM();
        map.addLayer(mapnik);//add the OSM layer to map
            var markers = new OpenLayers.Layer.Markers("Markers");
            map.addLayer(markers);
            var LonLat = new OpenLayers.LonLat(13.0,47.8);
        transform(
            new OpenLayers.Projection("EPSG:4326");
            map.getProjectionObject();
        );
        markers.addMarker(new OpenLayers.Marker(LonLat));
        map.setCenter(LonLat, 15);
    }
    </script>
</head>
<body onload = "init()">
    <div style = "width: 100%; height: 60%;" id = "basicMap"></div>
</body>

3 个答案:

答案 0 :(得分:1)

有些分号不应该是。

   transform(
        new OpenLayers.Projection("EPSG:4326"),
        map.getProjectionObject()
    );

这应该使用逗号,因为它们是函数参数。

{{1}}

如果将来发生这种情况,您可以使用代码linting工具,例如jslint:http://www.jslint.com/

答案 1 :(得分:0)

transform(
            new OpenLayers.Projection("EPSG:4326"),
            map.getProjectionObject()
        );

应该修理它。

答案 2 :(得分:0)

第二条错误消息是由第一条引起的:因为<script>块中应该定义init包含语法错误,所以无法加载,因此init从未定义过。因此,当您再向下拨打init()时,您会收到ReferenceError

第一个错误的原因在于:

transform(
    new OpenLayers.Projection("EPSG:4326");
    map.getProjectionObject();
);

参数由逗号分隔,而不是分号!所以JavaScript假定分号的结尾是这样的:

transform(   new OpenLayers.Projection("EPSG:4326");

...因为这意味着来自transform的parens已打开但未关闭,您会收到此错误。

所以,正确的代码是:

transform(
    new OpenLayers.Projection("EPSG:4326"),
    map.getProjectionObject()
);

请注意,对于第二个参数,我完全删除了分号(不能用逗号替换它),因为不允许使用尾随逗号。

只是为了理解:基本上,你在这里所做的只是多行版本:

transform(new OpenLayers.Projection("EPSG:4326"), map.getProjectionObject());

...所以它必须遵循函数调用的常规规则及其参数。