2014-01-30 30 views
0

我使用mapster制作了9个区域的映像。现在单击某个区域会在图像上方显示一些文字。我想显示来自多个文件夹的图像,取决于所选的区域。当在图像地图上选择区域'kamer1'时,我希望文件夹'/ kamer1'中的所有图像显示在图像地图上方。从javascript映像更改img src文件夹

这是我第一次使用JavaScript,所以期待这是一个简单的问题。

我做了的jsfiddle:http://jsfiddle.net/BTnV2/7/

HTML:

<div style="clear: both; width: 900px; height: 450px;" id="details"></div> 
<img id="layout" src="http://i61.tinypic.com/2yl4spc.png" usemap="#usa" style="width:900px;height:800px;"> 
<map id="usa_image_map" name="usa"> 
    <area href="#" room="kamer1" full="B&B" shape="rect" coords="50,764,143,635"> 
    <area href="#" room="kamer2" full="B&B" shape="rect" coords="146,764,238,669"> 
    <area href="#" room="kamer3" full="B&B" shape="rect" coords="241,764,326,669"> 
    <area href="#" room="hal" full="B&B" shape="rect" coords="146,666,326,635"> 
    <area href="#" room="badkamer" full="B&B" shape="rect" coords="234,632,326,574"> 
    <area href="#" room="keuken" full="B&B" shape="poly" coords="50,632,229,632,229,570,303,570,303,508,150,508,150,540,50,540"> 
    <area href="#" room="boven" full="B&B" shape="rect" coords="50,540,150,508"> 
    <area href="#" room="kamer4" full="B&B" shape="rect" coords="50,505,217,392"> 
    <area href="#" room="kamer5" full="B&B" shape="rect" coords="220,505,392,392"> 
</map> 

JS:

var xref = { 
    kamer1: "<b>FOTO's van kamer 1</b>", 
    kamer2: "<b>FOTO's van kamer 2</b>", 
    kamer3: "<b>FOTO's van kamer 3</b>", 
    hal: "<b>FOTO's van hal</b>", 
    badkamer: "<b>FOTO's van badkamer</b>", 
    keuken: "<b>FOTO's van keuken</b>", 
    boven: "<b>FOTO's van boven kamer</b>", 
    kamer4: "<b>FOTO's van kamer 4</b>", 
    kamer5: "<b>FOTO's van kamer 5</b>" 
}; 

var image = $('#layout'); 

image.mapster({ 
    fillOpacity: 0.5, 
    fillColor: "c20000", 
    stroke: true, 
    strokeColor: "c20000", 
    strokeOpacity: 0.8, 
    strokeWidth: 3, 
    singleSelect: true, 
    mapKey: 'room', 
    listKey: 'room', 
    clickNavigate: true, 
    fade: false, 
    fadeDuration: 50, 
    showToolTip: true, 
    toolTipContainer: '<div style="clear: both; align: center;"></div>', 
    areas: [{ 
     key: "kamer1", 
     toolTip: "Groepsaccommodatie <br> kamer 1" 
    }, { 
     key: "kamer2", 
     toolTip: "Groepsaccommodatie <br> kamer 2" 
    }, { 
     key: "kamer3", 
     toolTip: "Groepsaccommodatie <br> kamer 3" 
    }, { 
     key: "hal", 
     toolTip: "Groepsaccommodatie <br> hal" 
    }, { 
     key: "badkamer", 
     toolTip: "Groepsaccommodatie <br> badkamer" 
    }, { 
     key: "keuken", 
     toolTip: "Keuken en eetkamer" 
    }, { 
     key: "boven", 
     toolTip: "Recreatieruimte" 
    }, { 
     key: "kamer4", 
     toolTip: "Bed & Breakfast <br> kamer 1" 
    }, { 
     key: "kamer5", 
     toolTip: "Bed & Breakfast <br> kamer 2" 
    }], 

    onClick: function (e) { 
     $('#details').html(xref[e.key]); 
    } 
}); 
+0

而不是$('#details')。html(xref [e.key]);你需要一个返回图像标签的服务器进程并执行$('#details')。load(xref [e.key]); – mplungjan

+0

感谢@mplungjan的回复。我之前并没有真正指定,但我不需要动态加载文件夹中的所有图像,只需要几个预定义的图像。假设我有一个文件夹/ kamer1,其中包含kamer1_1.jpg直到kamer1_5.jpg。根据这个命名规则,是否有简单的方法来加载这些图像?其他文件夹将包含类似的文件,名为kamer2_1.jpg等。 – Laureus

回答

0
var xref = { 
    kamer1: { 
     "desc":"FOTO's van kamer 1", 
     "images":["stoel.jpg","tafel.jpg"] 
    }, 
    kamer2: { 
     "desc":"FOTO's van kamer 2", 
     "images":["image1.jpg","image2.jpg"] 
    } 
}; 
// note the lack of comma on the last room 

onClick: function (e) { 
    e.preventDefault(); 
    var room = xref[e.key]; 
    var html = '<b>'+room.desc+'</b><br/>'; 
    for (var i=0;i<room.images.length;i++) 
    html += '<img src="'+images[i]+'" alt="image #'+(i+1)+'" />'; 
    $('#details').html(html); 
} 

如果你不知道的图像数量或名称可以试试这个:

var xref = { 
    kamer1: "FOTO's van kamer 1", 
    kamer2: "FOTO's van kamer 2", 
    kamer3: "FOTO's van kamer 3" 
} 
onClick: function (e) { 
    e.preventDefault(); 
    var html = '<b>'+xref[e.key]+'</b><br/>'; 
    var imagePath = e.key+"/"+e.key+"_"; 
    for (var i=1;i<=5;i++) { 
    html += '<img src="'+imagePath+i+'" alt="image #'+(i+1)+'"'+ 
    ' onerror="this.parentNode.removeChild(this)" />'; 
    } 
    $('#details').html(html); 
}