Jquery变量类型问题

Jquery variable type issue

本文关键字:问题 类型 变量 Jquery      更新时间:2023-09-26

我有下面的脚本,它使用下拉索引创建对变量的引用,以在谷歌地图上绘制坐标。这些是坐标对象:

var posl0 = { lat: 53.486204, lng: -3.217980 };
var posl1 = { lat: 51.493399, lng: -2.994917 };
var posl2 = { lat: 53.328493, lng: -3.098814 };
var posl3 = { lat: 53.412157, lng: -2.838219 };
var posl4 = { lat: 53.481338, lng: -2.886647 };
var posl5 = { lat: 53.401431, lng: -2.994917 };
var posl6 = { lat: 53.513252, lng: -2.944996 };
var posl7 = { lat: 53.372710, lng: -3.183254 };
var posl8 = { lat: 53.374466, lng: -2.868754 };

这是我的脚本:

function addnewmarker(selc, mapno) {
    var locaz = ["Aintree", "Formby", "Heswall", "Huyton", "Kirby", "Liverpool  City", "Maghull", "West Kirby", "Woolton"];
    var pos = 'posl' + mapno;
    var pos.toArray();
    alert(pos);
    marker = new google.maps.Marker({
        position: pos,
        map: map,
        title: 'Aintree',
        animation: google.maps.Animation.DROP,
    });
    adsho(1);
}

我的问题似乎是使用pos变量作为指向posl对象的指针。如果我输入position: posl1的位置,一切都很好,但position: pos什么也不做,尽管它提醒相同的posl1参考

有人能提供帮助/建议吗?

问题是因为pos值是一个字符串,而不是对posX变量中对象的引用。您可以使用eval()来解决此问题,但eval()是非常糟糕的做法,应该避免。

相反,您可以通过将所有对象放置到一个数组中,然后通过索引访问它们来实现所需的功能。类似这样的东西:

var pos = [{ lat: 53.486204, lng: -3.217980 },{ lat: 51.493399, lng: -2.994917 },{ lat: 53.328493, lng: -3.098814 },{ lat: 53.412157, lng: -2.838219 },{ lat: 53.481338, lng: -2.886647 },{ lat: 53.401431, lng: -2.994917 },{ lat: 53.513252, lng: -2.944996 },{ lat: 53.372710, lng: -3.183254 },{ lat: 53.374466, lng: -2.868754 }]
function addnewmarker(selc, mapno) {
    var locaz = ["Aintree", "Formby", "Heswall", "Huyton", "Kirby", "Liverpool  City", "Maghull", "West Kirby", "Woolton"];
    marker = new google.maps.Marker({
        position: pos[mapno],
        map: map,
        title: 'Aintree',
        animation: google.maps.Animation.DROP,
    });
    adsho(1);
}

还要注意,您不需要使用jQuery的toArray()(很可能会导致错误),也不使用locaz数组,但我认为这只是由于对问题中的部分代码进行了编辑。

替换此行

var pos = eval('posl' + mapno);

试试这个;)

创建元素数组的方式是错误的,从数组中访问元素的方式也是错误的;

在定义数组时,可以逐个或多次将元素添加到数组中;

创建数组时有多个元素;

var array = [1, 2, 3, 4, 6, 7];/* in this way you can assign as many elements you want to add to this array array index starts from 0; */
var array = []; /* empty array later you can add elements to it */
array[0] = 1;
array[1] = 2; /* add element to directly at desired index */
array.push(1);
array.push(2);/* add element to array at the end */   

所以在你的情况下,试试这个

var positions = [{ lat: 53.486204, lng: -3.217980 },
    { lat: 51.493399, lng: -2.994917 },
    { lat: 53.328493, lng: -3.098814 },
    { lat: 53.412157, lng: -2.838219 },
    { lat: 53.481338, lng: -2.886647 },
    { lat: 53.401431, lng: -2.994917 },
    { lat: 53.513252, lng: -2.944996 },
    { lat: 53.372710, lng: -3.183254 },
    { lat: 53.374466, lng: -2.868754 }];

function addnewmarker(selc, mapno) {
    var locaz = ["Aintree", "Formby", "Heswall", "Huyton", "Kirby", "Liverpool  City", "Maghull", "West Kirby", "Woolton"];
    var pos = positions[mapno];
    alert(pos);
    marker = new google.maps.Marker({
        position: pos,
        map: map,
        title: 'Aintree',
        animation: google.maps.Animation.DROP,
    });
    adsho(1);
 }