如何通过在 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(...
我的网页中包含 <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(...