网页html错误:Uncaught TypeError: Cannot read property 'addEventListener' of null
1 function openInfo(content,e){ 2 var p = e.target; 3 content = content+'<br/>坐标 : <br/>'+p.getPosition().lng+' '+p.getPosition().lat; 4 content = content+"<br/><Button id='startPoint'>设为起点</Button>"; 5 content = content+" <Button id='endPoint'>设为终点</Button>"; 6 var point = new BMap.Point(p.getPosition().lng, p.getPosition().lat); 7 var infoWindow = new BMap.InfoWindow(content,opts); // 创建信息窗口对象 8 map.openInfoWindow(infoWindow,point); //开启信息窗口
9 但是会发生报错:Uncaught TypeError: Cannot read property 'addEventListener' of null 10 影响就是第一次渲染监听不到,而后果就是点击的第一次无法监听,点击无效。 11 12 上网搜了很久也没有解决办法,其实这时候用延时监听就可以了!!! 13 14 我的代码写成这样 15 16 window.setTimeout(function() { 17 document.getElementById('startPoint').addEventListener('click', function() { 18 console.log(p.getPosition()); 19 startLng = p.getPosition().lng; 20 startLat = p.getPosition().lat; 21 map.closeInfoWindow(); 22 }, false); 23 document.getElementById('endPoint').addEventListener('click', function() { 24 endLng = p.getPosition().lng; 25 endLat = p.getPosition().lat; 26 route(); 27 }, false); 28 }, 500); 29 也就是在监听的时间中添加延时监听函数 30 window.setTimeout(function() { 31 }, 500);