Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/476.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何通过在JS中连接两个字符串动态地形成变量名,从而形成我的Google Map Marker变量的名称?_Javascript_Php_Google Maps_Google Maps Markers - Fatal编程技术网

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(...