Javascript JS访问数组中的数据
通过在web上找到的教程,我以某种方式利用准备好的SVG文件编制出了一个交互式地图 它显示免费、保留或出售的房屋,并连接到wordpress中的高级自定义字段以更改其状态(这就是我使用[shortcodes]的原因)。 当房子空闲时,它高亮显示(悬停)绿色,卖出=红色,保留=橙色 一切都很好,但是。。。 我想创建一个按钮,将所有出售或预订的房子都隐藏起来,只留下可用的房子 我将缩短大部分代码,并向您展示我的工作尝试 第一:具有SVG路径和属性的数组:Javascript JS访问数组中的数据,javascript,svg,snap.svg,Javascript,Svg,Snap.svg,通过在web上找到的教程,我以某种方式利用准备好的SVG文件编制出了一个交互式地图 它显示免费、保留或出售的房屋,并连接到wordpress中的高级自定义字段以更改其状态(这就是我使用[shortcodes]的原因)。 当房子空闲时,它高亮显示(悬停)绿色,卖出=红色,保留=橙色 一切都很好,但是。。。 我想创建一个按钮,将所有出售或预订的房子都隐藏起来,只留下可用的房子 我将缩短大部分代码,并向您展示我的工作尝试 第一:具有SVG路径和属性的数组: var path = svg.path("
var path = svg.path("M 2163.333,524.667 ... 2169.333,454.667 z");
path.data('id', 'c1');
path.data('status', '[statusdc1]'); //////////THIS IS THE DATA I WANT TO GET
map['c1'] = path;
var path = svg.path("M 2076,546.062 ... 2208.952,618.538 z");
path.data('id', 'c2');
path.data('status', '[statusdc2]'); //////////THIS IS THE DATA I WANT TO GET
map['c2'] = path;
每个路径都有两层显示给用户:路径本身和名称(因此您可以了解索引map[key][0]和map[key][1]后面是什么)
然后是悬停效果:
map[key].mouseover(function(e) {
if (this != activeElement) {
if(this[0].data('id')=="c1"){
if(this[0].data('status')=="sold"){
this[0].animate({
'fill': '#c80000',
'opacity' : 0.6,
'stroke' : '#c80000',
'stroke-width' : 2
}, 500);
}else if(this[0].data('status')=="free"){
this[0].animate({
'fill': '#A2E22D',
'opacity' : 0.6,
'stroke' : '#A2E22D',
'stroke-width' : 2
}, 500);
}else{
this[0].animate({
'fill': '#FFD700',
'opacity' : 0.6,
'stroke' : '#FFD700',
'stroke-width' : 2
}, 500);
}
$( ttc1 ).css( "opacity", 1 );
}else if(this[0].data('id')=="c2"){
$( ttc2 ).css( "opacity", 1 );
if(testc2=="sold"){
this[0].animate({
'fill': '#c80000',
'opacity' : 0.6,
'stroke' : '#c80000',
'stroke-width' : 2
}, 500);
}else if(testc2=="free"){
this[0].animate({
'fill': '#A2E22D',
'opacity' : 0.6,
'stroke' : '#A2E22D',
'stroke-width' : 2
}, 500);
}else{
this[0].animate({
'fill': '#FFD700',
'opacity' : 0.6,
'stroke' : '#FFD700',
'stroke-width' : 2
}, 500);
}
该准则适用于每家每户。(我知道不需要多次重复就可以完成,但这不是问题所在。一切都在运行。
现在的问题是:
当您通过此选择器调用单个(悬停在上方)对象的参数来处理该对象时,我看到了它是如何工作的
如何在遍历每个house//map[key]数组的for循环中获取这些参数(状态)?
这是我的尝试
var btnstatus=2;
document.getElementById("btn-check").onclick = function() {checkAvailable()};
function checkAvailable() {
for (var key in map) {
if (btnstatus % 2 != 0){
if(map[key].data('status')!=="free"){
map[key][0].animate({
'fill': '#fff',
'opacity' : 0.05
}, 500);
}
}else{
if(map[key].data('status')!=="free"){
map[key][0].animate({
'fill': '#000000',
'opacity' : 0.6
}, 500);
}
}
}
btnstatus+=1;
}
它会对每个可能的路径进行着色/取消着色(不仅仅是那些出售或保留的路径),因为参数返回的是未定义的路径。
如何在循环中获得所需的状态?:)
我是一名具有JS基础知识的平面设计师,我知道这可能像字母表一样简单。然而-没有经验,缺乏知识-请帮助。
对于任何语言错误,我深表歉意;)
欢迎 好的,显然我要查找的.data没有保存到map[key]中,而是保存在包含SVG路径的内部数组map[key][0]中。这是保存所有.data的地方
if(map[key][0].data('status')!=="free"){
这就是我要找的。感谢所有经过的人。好的,显然我要查找的.data没有保存到map[key]中,而是保存在包含SVG路径的内部数组map[key][0]中。这是保存所有.data的地方
if(map[key][0].data('status')!=="free"){
这就是我要找的。感谢所有路过的人。您使用的是什么svg JS库?如果你能创建一个我尽了最大努力的。抱歉,伙计,如果不清楚-我不是专业人士:(它基于SnapSVG库)您使用的svg JS库是什么?如果您创建了一个我尽了最大努力的svg库,这将非常有用。抱歉,伙计,如果不清楚-我不是专业人士:(它基于SnapSVG库)