2

我想填充一个城市的列表,并在地图上标记它们,使用AJAX我正在更新一个div元素与城市列表和每个城市元素,我试图调用addmarker()函数应该在谷歌地图上添加一个标记。 使用萤火虫我可以看到一个带有函数调用的javascript标记,但addmarker()没有被执行调用一个JavaScript函数从rails

什么是强制调用javascript函数并更新dom元素的最佳方法?

这里是我的addmarker()的样子:

function addmarker(lat,lng,title_new) 
    { 
    new_marker = new google.maps.Marker({ 
      position: latlng_new, 
      map: map, 
      title:title 
      }); 
    } 

这里是我的html.erb文件看起来像

 <%= post.content %> 
     <script type="javascript"> addmarker(<%= post.lat_long%>, <%= post.title%>);   
     </script> 
    </div> 

的DOM元素正在文档加载完成后更新。

回答

0

我不太清楚你到底在做什么,这个AJAX和addMarker是如何工作的?你确定文档在函数被调用之前已经完全加载了吗? 无论如何,当你填充每个div与城市(我假设你有一些循环通过你的回应),最快最肮脏的方法是直接调用你的JavaScript函数与每个元素。例如,在您的看法:

<% @response.each do |city| %> 
    ... #whatever 
    <script> 
     <%= "addMarker(#{city})" %> 
    </script> 
<% end > 

你必须留意,这是突兀的JavaScript和真难看,所以你可能要重新考虑这种做法。这个主题有很多文章。 Here's我找到了一个快速的。我会将整个结果对象传递给页面顶部的一个javascript函数,该函数遍历结果并添加标记。