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

Sumowanie nazw

Object Storage Arubacloud
0 głosów
396 wizyt
pytanie zadane 25 kwietnia 2018 w JavaScript przez Vinchit Obywatel (1,040 p.)
Cześć to znowu ja :D, wiecie może gdzie znajdę informacje o czymś takim jak sumowanie nazw?

Przykład: Test Test = 2x Test (w sensie jak powtórzy się to samo to od razu zamieni to na np. 2x Test itd.)

2 odpowiedzi

+2 głosów
odpowiedź 25 kwietnia 2018 przez kap Stary wyjadacz (11,620 p.)
wybrane 26 kwietnia 2018 przez Vinchit
 
Najlepsza

Można to zrobić na wiele różnych sposobów, tutaj przykład na szybko:

 

<div id="words">
  <button>text1</button>
  <button>text2</button>
  <button>text3</button>
  <button>text4</button>
  <button>text5</button>
  <button>text6</button>
  <button>text7</button>
  <button>text8</button>
  <button>text9</button>
</div>
<p id="output"></p>

 

const words = {}

const renderWords = (words) => {
  return Object
    .keys(words)
    .reduce((items, word) => {
      const item = words[word] === 1
        ? word
        : `${word} x ${words[word]}`
      
      return [...items, item]
    }, [])
    .join(', ')
}

const output = document.getElementById('output')

document
  .getElementById('words')
  .addEventListener('click', ({ target }) => {
    if (words[target.textContent]) {
      words[target.textContent] += 1
    } else {
      words[target.textContent] = 1
    }
    output.textContent = renderWords(words)
  })

 

CodePen: https://codepen.io/caderek/pen/YLWjpx?editors=1010

komentarz 26 kwietnia 2018 przez Vinchit Obywatel (1,040 p.)
Dzięki wielkie :)
komentarz 26 kwietnia 2018 przez Vinchit Obywatel (1,040 p.)

@kap, Wiesz jak zrobić by treść wyświetlała się w <input>

Przkład:

<input type="text" readonly size="150.100" id="output">

komentarz 26 kwietnia 2018 przez kap Stary wyjadacz (11,620 p.)

Zamiast textContent użyj atrybutu value

komentarz 26 kwietnia 2018 przez Vinchit Obywatel (1,040 p.)
Dzięki :)
komentarz 26 kwietnia 2018 przez Vinchit Obywatel (1,040 p.)

Dziwna sprawa ale na CodePen działa a na stronie już nie? 

Mój kod HTML:

<html lang=pl>
    <head>
        <title>Test</title>
        <script src="pamiec.js" type="text/javascript"></script>
        <style>
            .wyswietlacz2{
                height: 10px;
                text-align: center;
            }
        </style>
    </head>
    <body>
        <input id="output" type="text">
                <div id="words">
                    <button>text1</button>
                    <button>text2</button>
                    <button>text3</button>
                    <button>text4</button>
                    <button>text5</button>
                    <button>text6</button>
                    <button>text7</button>
                    <button>text8</button>
                    <button>text9</button>
                </div>
    </body>
</html>

JS:

const words = {}

const renderWords = (words) => {
    return Object
        .keys(words)
        .reduce((items, word) => {
        const item = words[word] === 1
        ? word
        : `x ${words[word]} ${word}`

        return [...items, item]
    }, [])
        .join(' | ')
}

const output = document.getElementById('output')

document
    .getElementById('words')
    .addEventListener('click', ({ target }) => {
    if (words[target.textContent]) {
        words[target.textContent] += 1
    } else {
        words[target.textContent] = 1
    }
    output.value = renderWords(words)
})

Tak dokładnie mam zrobione (testowo) i nie działa.

komentarz 26 kwietnia 2018 przez kap Stary wyjadacz (11,620 p.)
Bo ładujesz skrypt przed elementami na których operujesz - dodaj skrypt tuż przed znacznikiem zamykającym </body>
komentarz 27 kwietnia 2018 przez Vinchit Obywatel (1,040 p.)
Tak już wiem, przepraszam zapomniałem napisać że problem rozwiązany. :)
+1 głos
odpowiedź 25 kwietnia 2018 przez Tomek Sochacki Ekspert (227,510 p.)

Niezbyt rozumiem o co Ci dokładnie chodzi... mówisz o czymś takim?

const str = 'test';

str.repeat(2); //"testtest"

Czy o jakimś sprawdzaniu ile razy w ciągu str występuje podciąg "test"? Jeśli ten drugi przypadek to można by pomyśleć nad regexp ale musiałbyś dać parę przykładów i oczekiwane rezultaty aby można potestować rozwiązanie.

komentarz 25 kwietnia 2018 przez Vinchit Obywatel (1,040 p.)

Hmmmm myślę o czym takim https://codepen.io/Vinchit/pen/erZoEy że dwa razy kliknięcie tego samego przycisku "pomidor" zamiast wyniku "pomidor | pomidor |" to 2x pomidor | (i by skrypt automatycznie zamieniał gdy wykryje powtórzenie tych samych nazw.

Podobne pytania

+1 głos
1 odpowiedź 2,198 wizyt
pytanie zadane 18 stycznia 2021 w JavaScript przez Martita Bywalec (2,470 p.)
0 głosów
3 odpowiedzi 6,210 wizyt
–1 głos
2 odpowiedzi 731 wizyt

92,555 zapytań

141,403 odpowiedzi

319,557 komentarzy

61,940 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!

...