Php JQuery:OnClick方法后无法加载OpenLayers映射

Php JQuery:OnClick方法后无法加载OpenLayers映射,php,jquery,html,jquery-mobile,openlayers,Php,Jquery,Html,Jquery Mobile,Openlayers,我的JQM站点上有一个OpenLayers映射,无法正确加载。我确信这取决于onclick()方法,但我不太确定是否有其他解决方法。我已经在JQuery站点上查看了.click()方法,但我认为由于该方法的工作方式,这种方法不起作用 onclick()方法位于一个列表中,并加载一个JS函数,该函数更新另一个页面上的html。该列表由一个PHP循环填充,该循环从数组中获取数据;更改的HTML取决于拾取的项目。该函数还可以在同一页面上创建地图 以下是PHP循环: <?php

我的JQM站点上有一个OpenLayers映射,无法正确加载。我确信这取决于onclick()方法,但我不太确定是否有其他解决方法。我已经在JQuery站点上查看了.click()方法,但我认为由于该方法的工作方式,这种方法不起作用

onclick()方法位于一个列表中,并加载一个JS函数,该函数更新另一个页面上的html。该列表由一个PHP循环填充,该循环从数组中获取数据;更改的HTML取决于拾取的项目。该函数还可以在同一页面上创建地图

以下是PHP循环:

<?php       
          for ($row = 0; $row < $arrlength; $row++)
          {
              echo "<li>";   
              echo "<a href='#room-info' onclick='updateRoom(\"".$rooms[$row]["Room"]."\", \"".$rooms[$row]["Building"]."\", \"".$rooms[$row]["Campus"]."\", \"".$rooms[$row]["X"]."\", \"".$rooms[$row]["Y"]."\");'>";
              echo $rooms[$row]["Room"];
              echo "</a>"; 
              echo "</li>";
          }
?>

以下是JS函数:

function updateRoom(roomNumber, building, campus, xCoor, yCoor)
    {
        x=document.getElementById("roomInfo");  // Find the element
        x.innerHTML="<h1>Room</h1>" + roomNumber + "<br><h1>Building</h1>" + building + "<br><h1>Campus</h1>" + campus;    // Change the content

        var map, baseLayer;
        var options = {numZoomLevels: 7, isBaseLayer: true,};

        map = new OpenLayers.Map('map');            
        baseLayer = new OpenLayers.Layer.Image("College Lane","college-lane-large.png", 
        new OpenLayers.Bounds(-1000, -1000, 1000, 1000),
        new OpenLayers.Size(1500,1500), options);
        map.addLayer(baseLayer);

        var center = new OpenLayers.LonLat(xCoor,yCoor);
        map.setCenter(center ,0);  

        map.addControl(new OpenLayers.Control.LayerSwitcher());
        map.addControl(new OpenLayers.Control.MousePosition());

        var size = new OpenLayers.Size(21,25);
        var offset = new OpenLayers.Pixel(-(size.w/2), -size.h);
        var icon = new OpenLayers.Icon('http://www.openlayers.org/dev/img/marker.png',size,offset);
        var markers = new OpenLayers.Layer.Markers( "Marker" );
        map.addLayer(markers);
        markers.addMarker(new OpenLayers.Marker(center), icon);
    }
功能更新eRoom(房间号、建筑、校园、xCoor、yCoor)
{
x=document.getElementById(“roomInfo”);//查找元素
x、 innerHTML=“房间”+roomNumber+“
建筑”+Building+“
校园”+Campus;//更改内容 var映射,底层; var options={numZoomLevels:7,isBaseLayer:true,}; map=newOpenLayers.map('map'); baseLayer=新的OpenLayers.Layer.Image(“学院巷”,“学院巷大.png”, 新的OpenLayers.Bounds(-1000,-1000,1000,1000), 新OpenLayers。尺寸(15001500),可选); map.addLayer(baseLayer); var center=newopenlayers.LonLat(xCoor,yCoor); 地图设置中心(中心,0); addControl(新的OpenLayers.Control.LayerSwitcher()); addControl(新的OpenLayers.Control.MousePosition()); var size=新的OpenLayers.size(21,25); var偏移=新的OpenLayers.Pixel(-(大小为w/2),-size.h); var icon=新的OpenLayers.icon('http://www.openlayers.org/dev/img/marker.png,大小,偏移量); var markers=新的OpenLayers.Layer.markers(“Marker”); 添加图层(标记); markers.addMarker(新的OpenLayers.Marker(中间),图标); }
选择一个项目后,您将进入一个页面,该页面显示更新的HTML以及OpenLayers地图。html文本正确更新,但OpenLayers映射为空

我会把代码放在这里,但是有很多。我的网站可以在这里找到:

要进入“麻烦”页面,您必须首先单击“查找房间”,搜索LC154,因为这是我唯一正确设置的项目。选择该房间后,将显示该页面


几天来我一直在努力解决这个问题,所以如果有人真的能找出它不起作用的原因,我将不胜感激:)

您的结果页会出现以下错误:TypeError:$.event.handle未定义。
我想你应该看看:

我不太确定我是否理解。你认为onclick()是问题所在吗?我应该改用addEventListener()吗?也许我错了。js错误在地图显示之前显示。当我使用openlayers演示时,我可以显示您的地图([demomap])。您的选项中的“true”后面有一个逗号,我将其打断,即。我发现您使用的是jquery/jqm的最新版本。使用旧版本。我使用jquery-1.8.2和jquery.mobile-1.3.0。你认为切换到旧版本会有帮助吗?也许。你在没有jqm的情况下测试过你的地图吗?实际上,地图在我的另一个页面上工作,这里它只是一个默认地图:只有当我尝试使用变量创建地图时,它才会出错。检查聊天