Just nu i M3-nätverket
Gå till innehåll

Att sätta på flera div-var med en click


Admini

Rekommendera Poster

Hej

Jag har flera divvar på samma sida så här:

<div id="1_2" style="position:relative; visibility:hidden;">innehåll</div>

 

Deras ID:er kan se ut så här:

1_2 , 3_4, 2_5 , 6_12

2_34 , 3_3, 4_12

1_4 , 2_21 , 3_45

 

Nu vill jag "tända" alla de som börjar med en o samma siffra, t.ex alla som har en id med början 1

1_2 och 1_4

eller

3_4 och 3_3 och 3_45

 

Jag triggar detta genom att klicka på en <a href> i en lista

onClick="showId(3, 4)"

senare i function showId(a,b ){

document.getElementById(a+"_"+b ).style.visibility="visible";}

 

Men jag har kört fast ORDENTLIGT, så HJÄÄÄÄLP snälla!

Tack för alla tips o hjälp

Länk till kommentar
Dela på andra webbplatser

Hej

Jag har flera divvar på samma sida så här:

<div id="1_2" style="position:relative; visibility:hidden;">innehåll</div>

 

Deras ID:er kan se ut så här:

1_2 , 3_4, 2_5 , 6_12

2_34 , 3_3, 4_12

1_4 , 2_21 , 3_45

 

Nu vill jag "tända" alla de som börjar med en o samma siffra, t.ex alla som har en id med början 1

1_2 och 1_4

eller

3_4 och 3_3 och 3_45

 

Jag triggar detta genom att klicka på en <a href> i en lista

onClick="showId(3, 4)"

senare i function showId(a,b ){

document.getElementById(a+"_"+b ).style.visibility="visible";}

 

Men jag har kört fast ORDENTLIGT, så HJÄÄÄÄLP snälla!

Tack för alla tips o hjälp

 

Haha! "I did it my way..."

Jag la till följande i function

function showId(a,b )
 {
for (i=1; i<=20; i++)
   {
 if (document.getElementById(a+"_"+b ))
     {
document.getElementById(a+"_"+b ).style.visibility="visible";
     }
  } 
}

Fast nu funkar det endast om ID:erna inte överstiger talet 20.

När ID:er överstiger 100 och mer, hur kan jag undvika att köra så långa loopar?

Länk till kommentar
Dela på andra webbplatser

Kolla här för lite olika lösningsförslag (jQuery, CSS, javascript):

http://stackoverflow.com/questions/10111668/find-all-elements-whose-id-begins-with-a-common-string

 

Jag tror, det jag behöver är en 2-dimensionell  array i javascript, där jag kan spara "parent" och "barn" värden. Jag har testat lite med följande:

 

var minArr[0][1];

 

1Men jag kan inte fylla den med värden:

 

 minArr[0][1]= 34;

 

Vad är det för fel?

Länk till kommentar
Dela på andra webbplatser

Det enklaste (men inte alltid det mest optimala) sättet att skapa tvådimensionella arrayer tycker jag är: 

var myArr = [["Kalle","Anka"],["Kajsa","Anka"],["Musse","Pigg"]];
alert("Förnamn: " + myArr[0][0] +"\nEfternamn: " + myArr[0][1]);

Länk till kommentar
Dela på andra webbplatser

Kan man ha 3 eller mer värden i dem som:

| Kalle | Anka | gift |

| Musse| Pigg| ogift |

 

Och då fyller man dem med värden så här?

myArr[0][0]= "Kalle";

myArr[0][1]= "Anka";

myArr[0][2]= "gift";

 

eller ?!

Länk till kommentar
Dela på andra webbplatser

Det finns som sagt flera olika sätt att göra det på. Men om du vill utöka mitt exempel ovan med civilstånd så är det enkelt: 

var myArr = [
   ["Kalle","Anka","Gift"]
  ,["Kajsa","Anka","Gift"]
  ,["Musse","Pigg","Ogift"]
];

alert("Förnamn: " + myArr[0][0] +"\nEfternamn: " + myArr[0][1] +"\nCivilstånd: " + myArr[0][2]);
Länk till kommentar
Dela på andra webbplatser

Kan man ha 3 eller mer värden i dem som:

| Kalle | Anka | gift |

| Musse| Pigg| ogift |

 

Och då fyller man dem med värden så här?

myArr[0][0]= "Kalle";

myArr[0][1]= "Anka";

myArr[0][2]= "gift";

 

eller ?!

 

När du börjar lägga in fler attribut på det här viset skulle jag rekommendera att du istället använder objekt-literaler. Det är mycket enklare att hålla reda på, och referera till, attributen. Såhär:

var myArr = [
  { firstName: "Musse", lastName: "Pigg", status: "gift"},
  { firstName: "Kalle", lastName: "Anka", status: "ogift"}
];

När du sedan loopar igenom dem så blir det mycket tydligare vad som händer:

var person = null;

for(var i = 0, l = myArr.length; i < l; i++) {
  person = myArr[i];
  console.log(person.firstName + ' ' + person.lastName + ' är: ' + person.status);
}
Länk till kommentar
Dela på andra webbplatser

När du börjar lägga in fler attribut på det här viset skulle jag rekommendera att du istället använder objekt-literaler. Det är mycket enklare att hålla reda på, och referera till, attributen. 

 

:thumbsup:

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...