'Melhorar' bloco de código
Vou começar em um projeto onde terei que manipular uma imagem svg, vai ter um select e cada option vai destacar uma área dessa imagem. É um mapa de uma feira, e cada option é uma empresa e será destacado no mapa onde vai estar o estande dessa empresa. Antes de iniciar o projeto, acabei resolvendo 'brincar' um pouco com svg que nunca havia trabalhado, peguei um svg do mapa do Brasil e comecei a mexer. Fiz esse script que faz com que seja destacada a região do país selecionada no option, mas eu sei que o código está 'sujo', não está muito 'legal', e imagino que tenha uma forma de melhorá-lo. Acho que é meio que questão de lógica, né?
O código que funciona está assim:
var mapa = document.getElementById('map');
SVGDoc = mapa.getSVGDocument();
SVGRoot = SVGDoc.documentElement;
svgns = 'http://www.w3.org/2000/svg';
var norte = SVGRoot.querySelector('#norte');
var nordeste = SVGRoot.querySelector('#nordeste');
var centro = SVGRoot.querySelector('#centro-oeste');
var sudeste = SVGRoot.querySelector('#sudeste');
var sul = SVGRoot.querySelector('#sul');
$("select").change(function() {
$("select option:selected").each(function() {
if ($(this).val() == 'norte'){
norte.style.fill = '#ff0000';
} else {
norte.style.fill = '#000';
}
if ($(this).val() == 'nordeste'){
nordeste.style.fill = '#ff0000';
} else {
nordeste.style.fill = '#000';
}
if ($(this).val() == 'centro'){
centro.style.fill = '#ff0000';
} else {
centro.style.fill = '#000';
}
if ($(this).val() == 'sudeste'){
sudeste.style.fill = '#ff0000';
} else {
sudeste.style.fill = '#000';
}
if ($(this).val() == 'sul'){
sul.style.fill = '#ff0000';
} else {
sul.style.fill = '#000';
}
});
});
Eu até tentei algo diferente, como isso aqui:
var mapa = document.getElementById('map');
SVGDoc = mapa.getSVGDocument();
SVGRoot = SVGDoc.documentElement;
svgns = 'http://www.w3.org/2000/svg';
var norte = SVGRoot.querySelector('#norte');
var nordeste = SVGRoot.querySelector('#nordeste');
var centro = SVGRoot.querySelector('#centro-oeste');
var sudeste = SVGRoot.querySelector('#sudeste');
var sul = SVGRoot.querySelector('#sul');
var regioes = [norte, nordeste, centro, sudeste, sul, ''];
for (i = 0; i<6; i++) (function(i) {
$("select").eq(i).change(function() {
$( "select option:selected" ).each(function(){
norte.style.fill = '#ff0000';
nordeste.style.fill = '#ff0000';
centro.style.fill = '#ff0000';
sudeste.style.fill = '#ff0000';
sul.style.fill = '#ff0000';
if (i > 5) {
regioes[i].style.fill = '#000';
return false;
}
if (i == ''){
norte.style.fill = '#000';
nordeste.style.fill = '#000';
centro.style.fill = '#000';
sudeste.style.fill = '#000';
sul.style.fill = '#000';
return false;
}
});
});
});
Mas acabei não chegando em lugar nenhum hahaDiscussão (1)
Carregando comentários...