在函数中从数组中获取值

时间:2013-05-24 08:24:20

标签: javascript jquery

不确定我应该给这个标题,但我遇到了一个问题,我正在努力。

我正在处理涉及在地图上绘图的项目,地图有不同的房间,每个房间都有不同的大小。在选择新房间时,地图应调整大小。我将所有大小存储在我在jquery顶部创建的数组中。它基本上会在页面加载时进行重新缩放,因为你必须选择一个你想要开始的房间,这个重新缩放的工作应该如此,所以我将该代码复制到函数中,但它似乎不想在那里工作。

我用来建造房间的数组:

var hal1 = { id: 1, x: '0', y: '0', width: '114', height: '81', hal: 'Brabanthal'};
var hal2 = { id: 2, x: '0', y: '0', width: '33', height: '60', hal: 'Kempenhal'};
var hal3 = { id: 3, x: '0', y: '0', width: '87', height: '66', hal: 'Langstraathal'};  
var hal4 = { id: 4, x: '0', y: '0', width: '42', height: '47', hal: 'Diezehal'};  
var hal5 = { id: 5, x: '0', y: '0', width: '72', height: '57', hal: 'Peelhal'};  

var hallen = [ hal1, hal2, hal3, hal4, hal5 ];  

这是我用来在页面加载时重新缩放的代码

var hal = getUrlVars()["hal"];
if(typeof(hal) === 'undefined') hal=1;

var items = $.grep(hallen, function(x) {
    return x.id == hal
})

$(document).ready( function() {
    $.map(items, function(itemhal) {
     halw = itemhal.width;
     halh = itemhal.height;
     $('#mapDrag').width((Math.round(gridStand)*halw)*2).height((Math.round(gridStand)*halh)*2);
    });
});

以上所有代码都能完美运行,它只是下一个无法使用的功能。人们可以在点击它时从下拉菜单中选择一个不同的房间,它发送房间的id(项目)并运行该功能用它。然后它将所有新数据加载到div mapdrag中,然后它应该重新调整到数组中给定的大小,它与初始页面加载时的id匹配。

无法工作的功能:

function changeHal(item) {
    if (hal != $(item).attr('halNr')) {
        hal = $(item).attr('halNr');
        var halXhr = jQuery.ajax({
            type: "POST",
            url: "ajax/hal.php",
            data: 'hal=' + hal,
            cache: false,
            success: function (response) {
                var items = $.grep(hallen, function (x) {
                    return x.id == hal
                })
                $.map(items, function (itemhal) {
                    halw = itemhal.width;
                    halh = itemhal.height;
                    $('#mapDrag').width((Math.round(gridStand) * halw) * 2).height((Math.round(gridStand) * halh) * 2);
                });
            }
        });
    }
}

感觉它的功能非常简单,但我似乎无法让它发挥作用。

这里有一个jsFiddle,里面有它的基础知识。正如您在加载时可以看到的那样,它会以正确的大小缩放div,但是在下拉列表中选择不同的房间时,它不会调整大小。 jsFiddle:http://jsfiddle.net/gujPK/

0 个答案:

没有答案