1
I’m trying to make the data inside the json file be shown in html, I made a first code but it was very repetitive with exaggerated arrays so I tried to do it differently but now no longer present the data of json...
I’m using 3 selects to filter json information:
<select id="myselect" class="classa" onchange="change_myselect(this.value)">
<option value="">Faixa etária</option>
<option class="opcoes" value="faixaA">0 a 17 anos</option>
<option class="opcoes" value="faixaB">18 a 25 anos</option>
<option class="opcoes" value="faixaC">26 a 35 anos</option>
<option class="opcoes" value="faixaD">36 ou mais</option>
<option class="opcoes" value="faixaE">Desconhecido</option>
</select>
<br> <br>
<select id="myselect2" class="classb" onchange="change_myselect(this.value)">
<option class="opcoes" value="">Sexo:</option>
<option class="opcoes" value="faixaF">Masculino</option>
<option class="opcoes" value="faixaG">Feminino</option>
<option class="opcoes" value="faixaH">Desconhecido</option>
</select>
<br> <br>
<select id="myselect3" class="classc" onchange="change_myselect(this.value)">
<option class="opcoes" value="">Recurso a arma:</option>
<option class="opcoes" value="faixaI">Sim</option>
<option class="opcoes" value="faixaJ">Não</option>
<option class="opcoes" value="faixaK">Desconhecido</option>
</select>
below is a paragraph that is where the json information will be shown
<p id="demoA"></p>
moving on to the script, I had previously created 11 arrays and decided to try another way to not have so many arrays for "just" popular dropdowns
current code:
var faixas = { };
var genero = { };
var armas = { };
for(var i = 0; i < json.length; i++) {
if (faixas[json[i].Faixa] == undefined) {
faixas[json[i].Faixa] = ["FaixaA"];
faixas[json[i].Faixa] = ["FaixaB"];
faixas[json[i].Faixa] = ["FaixaC"];
faixas[json[i].Faixa] = ["FaixaD"];
faixas[json[i].Faixa] = ["FaixaE"];
}
faixas[json[i].Faixa].push(json[i].Nome + " " + json[i].Idade + " " + json[i].Localidade);
if (genero[json[i].Sexo] == undefined) {
genero[json[i].Sexo] = ["Masc"];
genero[json[i].Sexo] = ["Fem"];
genero[json[i].Sexo] = ["Desconhecido"];
}
genero[json[i].Sexo].push(json[i].Nome + " " + json[i].Idade + " " + json[i].Localidade);
if (armas[json[i].RecursoArma] == undefined) {
armas[json[i].RecursoArma] = ["Sim"];
armas[json[i].RecursoArma] = ["Não"];
armas[json[i].RecursoArma] = ["Desconhecido"];
}
armas[json[i].RecursoArma].push(json[i].Nome + " " + json[i].Idade + " " + json[i].Localidade);
}
The purpose of this code above is to read the whole json and store the data within each var created above.
Passing the second part of the script
basically what it does is to see if you used the first, the second or the third select, see which option was chosen by the user and play inside the paragraph.
if($('#myselect').val() == "faixaA"){
document.getElementById("demoA").innerHTML = faixas;
}
if($('#myselect').val() == "faixaB"){
document.getElementById("demoA").innerHTML = faixas;
}
if($('#myselect').val() == "faixaC"){
document.getElementById("demoA").innerHTML = faixas;
}
if($('#myselect').val() == "faixaD"){
document.getElementById("demoA").innerHTML = faixas;
}
if($('#myselect').val() == "faixaE"){
document.getElementById("demoA").innerHTML = faixas;
}
if($('#myselect2').val() == "faixaF"){
document.getElementById("demoA").innerHTML = genero;
}
if($('#myselect2').val() == "faixaG"){
document.getElementById("demoA").innerHTML = genero;
}
if($('#myselect2').val() == "faixaH"){
document.getElementById("demoA").innerHTML = genero;
}
if($('#myselect3').val() == "faixaI"){
document.getElementById("demoA").innerHTML = armas;
}
if($('#myselect3').val() == "faixaJ"){
document.getElementById("demoA").innerHTML = armas;
}
if($('#myselect3').val() == "faixaK"){
document.getElementById("demoA").innerHTML = armas;
}
Each "faixaA/B/C/etc" is the value in the select
but basically something in the code is not working and simply does not reproduce what is inside the json file, it just appears like this:
The json data are these:
[
{
"Id": 1,
"Nome": "Lucia Rodrigues",
"Idade": 48,
"Localidade": "Lagoa",
"Faixa Etaria": "36 ou mais",
"Faixa": "faixaD",
"Sexo": "Fem",
"RecursoArma": "Sim"
},
{
"Id": 2,
"Nome": "Nome Desconhecido",
"Idade": 46,
"Localidade": "Ilha Terceira",
"Faixa Etaria": "36 ou mais",
"Faixa": "faixaD",
"Sexo": "Fem",
"RecursoArma": "Não"
},
{
"Id": 3,
"Nome": "Vera Silva",
"Idade": 30,
"Localidade": "Almada",
"Faixa Etaria": "26-35",
"Faixa": "faixaC",
"Sexo": "Fem",
"RecursoArma": "Não"
},
{
"Id": 4,
"Nome": "Maria Eufrázia",
"Idade": 83,
"Localidade": "Terena",
"Faixa Etaria": "36 ou mais",
"Faixa": "faixaD",
"Sexo": "Fem",
"RecursoArma": "Sim"
},
{
"Id": 5,
"Nome": "Luzia Rosado",
"Idade": 80,
"Localidade": "Terena",
"Faixa Etaria": "36 ou mais",
"Faixa": "faixaD",
"Sexo": "Fem",
"RecursoArma": "Sim"
},
{
"Id": 6,
"Nome": "Fernanda",
"Idade": 70,
"Localidade": "Oeiras",
"Faixa Etaria": "36 ou mais",
"Faixa": "faixaD",
"Sexo": "Fem",
"RecursoArma": "Sim"
},
{
"Id": 7,
"Nome": "Nome Desconhecido",
"Idade": 48,
"Localidade": "Ilha Terceira",
"Faixa Etaria": "36 ou mais",
"Faixa": "faixaD",
"Sexo": "Fem",
"RecursoArma": "Não"
},
{
"Id": 8,
"Nome": "Marina Mendes",
"Idade": 25,
"Localidade": "Moimenta da Beira",
"Faixa Etaria": "18-25",
"Faixa": "faixaB",
"Sexo": "Fem",
"RecursoArma": "Sim"
},
{
"Id": 9,
"Nome": "Helena Cabrita",
"Idade": 60,
"Localidade": "Cruz de Pau",
"Faixa Etaria": "36 ou mais",
"Faixa": "faixaD",
"Sexo": "Fem",
"RecursoArma": "Sim"
},
{
"Id": 10,
"Nome": "Lana",
"Idade": 2,
"Localidade": "Cruz de Pau",
"Faixa Etaria": "0-17",
"Faixa": "faixaA",
"Sexo": "Fem",
"RecursoArma": "Sim"
},
{
"Id": 11,
"Nome": "Fernando Cruz",
"Idade": 60,
"Localidade": "Porto",
"Faixa Etaria": "36 ou mais",
"Faixa": "faixaD",
"Sexo": "Masc",
"RecursoArma": "Não"
},
{
"Id": 12,
"Nome": "Ana Maria Silva",
"Idade": 53,
"Localidade": "Ilha Terceira",
"Faixa Etaria": "36 ou mais",
"Faixa": "faixaD",
"Sexo": "Fem",
"RecursoArma": "Sim"
},
{
"Id": 13,
"Nome": "Ana Paula",
"Idade": 40,
"Localidade": "Salamonde, Vieira do Minho",
"Faixa Etaria": "36 ou mais",
"Faixa": "faixaD",
"Sexo": "Fem",
"RecursoArma": "Não"
},
{
"Id": 14,
"Nome": "Heila Lopes",
"Idade": 44,
"Localidade": "Ventosa, Torres Vedras",
"Faixa Etaria": "36 ou mais",
"Faixa": "faixaD",
"Sexo": "Fem",
"RecursoArma": "Não"
}
]
Briefly, it required that the name, age and location within the json be represented in the paragraph in the simplest and most compact way
I hope we can help
PS: I’m new to this and I can’t explain better what my doubt is... D
Where do I put it? I didn’t quite understand how to use it, sorry!
– David Mv
David, when you have your JSON already with all the information you want to show in your element
p
, you loop as in the function above, and create an element within thatp
with the data being iterated at the moment.– Robson Silva
but I want to put only a few things not all json, EXAMPLE: I have different people inside a json file, in select case I select the option "age range 18 to 25" would write in the paragraph all the people in the json file within that age range but if the user wants to add a new filter with select the "male" option would only write in the paragraph all people between 18 and 25 men.
– David Mv
This is David Cara. So I understood what you’re trying to do, I made an implementation here to help you with this problem, it’s not a 100% more solution from her you can make changes to your taste. See if it helps you. I’ll edit the answer.
– Robson Silva
Yeah I appreciate it but I’ve already solved it! Thanks anyway!
– David Mv