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

Javascript funkcja

Object Storage Arubacloud
0 głosów
141 wizyt
pytanie zadane 22 marca 2018 w JavaScript przez Vorex444 Dyskutant (9,610 p.)
edycja 22 marca 2018 przez Vorex444
      deleteNote: function(e) {
          //Id elementu
            var idObject = Number(e.target.parentElement.getAttribute('id'));
            alert(idObject);
          //Porownuje do tablicy
          let arrayPostslength = this.arrayPosts.length;
          for(var i = 0; i < arrayPostslength; i++) {
                if(this.arrayPosts[i].noteId === idObject) {
                    console.log(this.arrayPosts[i]);
                }
                else {
                    return;
                }
          }
      }

Hej, mam taką funkcję i nie mogę zrozumieć dlaczego działa mi tylko na pierwszego diva if i w konsoli wyseitla odpowiedni obiekt, jak klikne 1,2,3 itd. nie działa, tylko ostatni.

Tak wygląda tablica 

arrayPosts: [

{text: 'adasd' .....},

---||---

]

beforeMount() {
      if(localStorage.getItem('posts')) {
          this.arrayPosts = JSON.parse(localStorage.getItem('posts'));
      }
      else {
          return;
      }
  },

Gdy cos było zapisane w LS to wypełni ją jak nie to nie.

Tak wyglada funkcja dodajaca obiekt do tablicy 

addNewPost: function() {
          var getData = new Date();
          if(this.textPost === '') {
              alert('Wpisz coś');
          }
          else {
          this.arrayPosts.unshift({
              noteId: this.arrayPosts.length,
              text: this.textPost,
              data: getData.toLocaleString(),
              star: this.starInPost
          });
            localStorage.setItem('posts', JSON.stringify(this.arrayPosts));
            this.textPost = '';
          }
      }

A tak wgylada caly kod html podanego diva

<!--Post-->

            <div v-for="post,i in arrayPosts" v-bind:id="post.noteId" v-bind:key="i">
                <button v-on:click="deleteNote">x</button>
                <div>
                    <img v-bind:src="avatarPost" alt="Avatar">
                    <i v-show="post.star" title="Ważny post" class="demo-icon icon-star"></i>
                </div>
                <div >
                    <p>Opublikowany: {{post.data}}</p>
                    <p>{{post.text}}</p>
                </div>
            </div>

<!-- END Post-->

 

komentarz 22 marca 2018 przez gremlin Dyskutant (7,600 p.)
Powiem szczerze, że przydałby się większy kawałek kodu bo nie do końca rozumiem co się tutaj dzieje. Wrzuć fragment html z tymi divami i najlepiej cały ten obiekt
komentarz 22 marca 2018 przez Vorex444 Dyskutant (9,610 p.)
edytowałem post

1 odpowiedź

+1 głos
odpowiedź 22 marca 2018 przez niezalogowany

Pierwszy fragment kodu, linia 12

Wychodzisz z funkcji, jeśli pierwszy note nie pasuje.


Swoją drogą, zamiast szukać id po atrybutach elementu

var idObject = Number(e.target.parentElement.getAttribute('id'));

Przekaż je przy wywoływaniu metody:

v-on:click="deleteNote(post.noteId)"

I dalej w metodach będziesz miał:

deleteNote: function (id) {

Przy usuwaniu elementu z tablicy, możesz użyć po prostu filter

Podobne pytania

0 głosów
2 odpowiedzi 279 wizyt
0 głosów
1 odpowiedź 207 wizyt
pytanie zadane 9 lutego 2023 w JavaScript przez niezalogowany
0 głosów
2 odpowiedzi 277 wizyt
pytanie zadane 28 listopada 2022 w JavaScript przez Lidzia Koziura Początkujący (290 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!

...