第69行代码为上面会报错

来源:5-4 自由编程

一路向蓝

2019-04-25 15:54:21

<!DOCTYPE html>

<html lang="en">


<head>

<meta charset="UTF-8">

<title>Document</title>

<script type="text/javascript"

src="https://webapi.amap.com/maps?v=1.4.14&key=5ac64dd2f8f358f0779db94b0ae45c92&plugin=AMap.Autocomplete"></script>

<style>

* {

margin: 0;

padding: 0;

list-style: none;

}


#container {

width: 100%;

height: 100%;

position: absolute;

left: 0;

top: 0;

}


#setZoomNode {

width: 280px;

position: absolute;

z-index: 99;

right: 20px;

top: 50px;

border: 1px solid black;

box-shadow: 0 0 5px black;

background-color: #fff;

}


#searchNode {

width: 280px;

position: absolute;

z-index: 99;

right: 20px;

top: 20px;

}


.amap-icon img {

width: 25px;

height: 25px;

}

</style>

</head>


<body>

<div id="container"></div>

<div id="searchNode">


<script type="text/javascript">

var map = new AMap.Map("container", {

zoom: 11,

center: [116, 39.8]

});


var marker = new AMap.Marker({

icon: "https://a.amap.com/jsapi_demos/static/demo-center/icons/poi-marker-default.png",  //标记的图标

position:[116, 39.8]

})

map.add([marker])

map.setDefaultCursor("pointer");


map.on("click", function (e) {

map.remove([marker])

var marker = new AMap.Marker({

icon: "https://a.amap.com/jsapi_demos/static/demo-center/icons/poi-marker-default.png",  //标记的图标

position: [e.lnglat.lng, e.lnglat.lat],  //标记的坐标

})

// marker.setMap(map);

map.add([marker]);

})






</script>

</body>


</html>


用全局变量不会报错 可是我搞不懂为什么第一次必须是全局变量 我的理解是不是全局第一次点击的时候是不会报错的 第二次才会  难道不对嘛  请老师解惑!!!!!!!!!!!

写回答

1回答

好帮手慕糖

2019-04-25

同学你好,因为这里事件函数中有同名的局部变量,就不会去向上获取外部的变量了,所以就会报错了。

就好像我们如下例子,函数中的a会是undefined哦,因为函数中有声明的同名变量。所以不会去访问还是外的。而同学的这个项目中,因为是undefined,所以在使用就报错了哦。

http://img.mukewang.com/climg/5cc177c00001a8d603040193.jpg

同学也可以参考如下,在函数中输出下marker的值哦,会是undefined哦。

http://img.mukewang.com/climg/5cc1782a0001245205490182.jpg

希望能帮助到你,欢迎采纳。

祝学习愉快!

1

0 学习 · 6815 问题

查看课程