如何通过在 JS 中连接两个字符串来动态形成变量名,以形成我的 Google Map Marker 变量的名称?

How to form a variable name dynamically by concatenating two strings in JS, to form the name of my Google Map Marker variable?

我的网页中包含 <script type="text/javascript">。该脚本为我的 Google 地图定义了 Markers。此页面中包含另一个脚本,该脚本引用自另一个 .js 文件。我需要在单独的 JS 文件中编写的第二个脚本中,根据某些条件动态更改标记的图标。

实际上在第一页中,我使用 PHP 从数据库 table 中读取数据。然后用这个数据写出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});';

假设上面 PHP 代码中的最后一个语句打印到网页中:

var markerXYZ123 = new google.maps.Marker({position:{lat:123, lng:456}, map:map, icon: greenIcon})

现在,在第二个脚本中,我正在做一些处理,因此我首先更新了数据库记录中的一些字段 table,这是上述数据的来源第一个脚本。

然后,在第二个脚本中,我从相同的数据中提取数据 table。然后,根据某些情况,我必须更改标记的图标。为此,我将不得不使用像

这样的语句
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,
});

然后在您的其他脚本中,再次使用您拥有的 recordIdFromDb 访问 markers 对象中的相应键:

markers["XYZ123"].setIcon(...