• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed Rozwinięcie tabeli po kliknięciu

Object Storage Arubacloud
0 głosów
557 wizyt
pytanie zadane 22 maja 2017 w JavaScript przez niezalogowany
zamknięte 23 maja 2017

Witam. Nie moge znaleść błędu w kodzie. Po kliknięciu w strzałke w #league-table mają pokazać się dodatkowe <tr class="average"> które domyślnie mają wartość display: none; poniżej kod html, css, i javascript.

 

<div id="main">
   <div id="summary"><div id="league-table">
       <table>
           <tbody>
               <tr><th></th><th>TEAM</th><th>MP</th><th>P</th></tr>
               <tr><td>1.</td><td>CHELSEA</td><td>38</td><td>41</td></tr>
               <tr><td>2.</td><td>TOTTENHAM</td><td>38</td><td>41</td></tr>
               <tr><td>3.</td><td>MANCHESTER CITY</td><td>38</td><td>41</td></tr>
               <tr><td>4.</td><td>LIVERPOOL</td><td>38</td><td>41</td></tr>
               <tr><td>5.</td><td>ARSENAL</td><td>38</td><td>41</td></tr>
               <tr><td>6.</td><td>MANCHESTER UNITED</td><td>38</td><td>41</td></tr>
               <tr><td>7.</td><td>EVERTON</td><td>38</td><td>41</td></tr>
               <tr id="lapse"><td>...</td></tr>
               <tr class="average"><td>8.</td><td>elit</td><td>38</td><td>41</td></tr>
               <tr class="average"><td>9.</td><td>Aliquam</td><td>38</td><td>41</td></tr>
               <tr class="average"><td>10.</td><td>quis</td><td>38</td><td>41</td></tr>
               <tr class="average"><td>11.</td><td>ligula</td><td>38</td><td>41</td></tr>
               <tr class="average"><td>12.</td><td>pellentesque</td><td>38</td><td>41</td></tr>
               <tr class="average"><td>13.</td><td>aliquet</td><td>38</td><td>41</td></tr>
               <tr class="average"><td>14.</td><td>nunc</td><td>38</td><td>41</td></tr>
               <tr class="average"><td>15.</td><td>sit</td><td>38</td><td>41</td></tr>
               <tr class="average"><td>16.</td><td>amet</td><td>38</td><td>41</td></tr>
               <tr class="average"><td>17.</td><td>ultrices</td><td>38</td><td>41</td></tr>
               <tr><td>18.</td><td>HULL CITY</td><td>38</td><td>41</td></tr>
               <tr><td>19.</td><td>MIDDLESBROUGH</td><td>38</td><td>41</td></tr>
               <tr><td>20.</td><td>SUNDERLUND</td><td>38</td><td>41</td></tr>
           </tbody>
       </table>
       <img id="arrow" src="images/shift-128.png">
   </div></div></div
#main
{
    display: flex;
    flex-direction: column;
    align-items: center;
}

#summary
{
    width: 100%;
    height: 1000px;
}

/* LEAGUE TABLE */

#league-table
{
    display: flex;
    width: 11%;
    flex-direction: column;
    background-color:aqua;
    font-family: 'Oswald', sans-serif;
    align-items: flex-end;
}

#lapse
{
    
}

#arrow
{
    width: 32px;
    height: 32px;
    margin-top: 15px;
    margin-right: 9px;
}
var arrow = document.getElementById('arrow');
var teams = document.getElementsByClassName('average');
var dots = document.getElementById('lapse');

function onArrowClick(event)
{
    teams.style.display = 'flex';
    dots.style.display = 'none';
}

arrow.addEventListener('click', onArrowClick);

 

komentarz zamknięcia: ...

1 odpowiedź

0 głosów
odpowiedź 22 maja 2017 przez ScriptyChris Mędrzec (190,190 p.)
var teams = document.getElementsByClassName("average");

Zmienna teams zawiera listę elementów. W konsoli masz błąd:

Uncaught TypeError: Cannot set property 'display' of undefined
    at HTMLImageElement.onArrowClick

, ponieważ lista elementów nie posiada property style. Musisz odnieść się do konkretnego elementu tej listy, np. [0]:

 teams[0].style.display = "flex";

 

komentarz 22 maja 2017 przez niezalogowany

Po odniesieniu się do konkretnego elementu. Pojawia się błąd:

Uncaught TypeError: Cannot read property 'addEventListener' of null
    at script.js:11

komentarz 22 maja 2017 przez ScriptyChris Mędrzec (190,190 p.)
komentarz 22 maja 2017 przez niezalogowany

pozostałe pozycje dalej się nie pojawiają, ale znika <tr id="lapse"> (czyli tak jak powinno być) przypominam że w skład CSS'a wchodzi jeszcze 

.average
{
    display: none;
}

 

komentarz 23 maja 2017 przez ScriptyChris Mędrzec (190,190 p.)

pozostałe pozycje dalej się nie pojawiają

Namieszałeś coś z tym display: flex na tabeli. Poza tym zastosuj zmianę stylu do wszystkich elementów, a nie do jednego. Czyli zamiast:

teams[0].style.display = "flex";

, zapisz na przykład (nie jest to najlepsze rozwiązanie):

[...teams].forEach(elem => elem.style.display = "block");
komentarz 23 maja 2017 przez niezalogowany
Dziękuje za pomoc. Javascript póki co mnie przerasta, na pewno wróce do tego za jakiś czas. Temat do zamknięcia.

Podobne pytania

0 głosów
1 odpowiedź 660 wizyt
pytanie zadane 16 września 2018 w JavaScript przez Sebastian Szyja Bywalec (2,810 p.)
+1 głos
2 odpowiedzi 747 wizyt
0 głosów
0 odpowiedzi 155 wizyt
pytanie zadane 7 stycznia 2020 w Java przez luna22 Obywatel (1,420 p.)

92,576 zapytań

141,426 odpowiedzi

319,652 komentarzy

61,961 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...