Javascript 如何通过在JS中连接两个字符串动态地形成变量名,从而形成我的Google Map Marker变量的名称?
我的网页中包含了一个Javascript 如何通过在JS中连接两个字符串动态地形成变量名,从而形成我的Google Map Marker变量的名称?,javascript,php,google-maps,google-maps-markers,Javascript,Php,Google Maps,Google Maps Markers,我的网页中包含了一个。这个脚本正在为我的谷歌地图定义标记。此页面中包含另一个脚本,它是从另一个.js文件引用的。在单独的JS文件中编写的第二个脚本中,我需要根据某些条件动态更改标记的图标 实际上,在第一页中,我使用PHP从数据库表中读取数据。然后使用这些数据编写PHP语句,如 echo '<script>'; echo 'function initMap() {'; //.... code code echo 'var marker'. $recordIdFromDb .' = ne
。这个脚本正在为我的谷歌地图定义标记。此页面中包含另一个脚本,它是从另一个.js
文件引用的。在单独的JS文件中编写的第二个脚本中,我需要根据某些条件动态更改标记的图标
实际上,在第一页中,我使用PHP从数据库表中读取数据。然后使用这些数据编写PHP语句,如
echo '<script>';
echo 'function initMap() {';
//.... code code
echo 'var marker'. $recordIdFromDb .' = new google.maps.Marker({position:{lat: '.$recordData["lat"].', lng: '.$recordData["lng"].'}, map:map, icon: greenIcon});';
现在,在第二个脚本中,我正在进行一些处理,结果是我首先更新数据库表记录中的一些字段,这是上述第一个脚本中的数据源
然后,在第二个脚本中,我从同一个数据表中提取数据。然后,基于某些条件,我必须更改标记的图标。为此,我必须使用如下语句
markerXYZ123.setIcon(blah blah);
现在如上所述,XYZ123
标记名称的后缀实际上是数据库中该记录的id
在第二个脚本中,我有一个id
。我需要动态地形成标记变量的名称。类似于
("marker" + "XYZ123").setIcon(blah blah);
我该怎么做?如何在Javascript中动态形成此变量名?使用由
id
索引的对象,而不是动态变量名。例如,在第一个脚本中:
const markers = {};
markers[<?= $recordIdFromDb; ?>] = new google.maps.Marker({
position: {
lat: <?= $recordData["lat"] ?>,
lng: <?= $recordData["lng"] ?>,
},
map,
icon: greenIcon,
});
动态变量名是一种巨大的代码气味。改用对象。@CertainPerformance“改用对象。”-我是新手。请您再解释一下,我会很感激的。检查:您好,当我尝试访问markers对象时,第二个
.js
文件中出现错误:未捕获引用错误:markers未定义请确保在全局范围中定义markers
,以便您可以从其他脚本访问它,否则会出现ReferenceError
const markers = {};
markers[<?= $recordIdFromDb; ?>] = new google.maps.Marker({
position: {
lat: <?= $recordData["lat"] ?>,
lng: <?= $recordData["lng"] ?>,
},
map,
icon: greenIcon,
});
markers["XYZ123"].setIcon(...