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

Sumowanie nazw

VPS Starter Arubacloud
0 głosów
498 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,490 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,542 wizyt
pytanie zadane 18 stycznia 2021 w JavaScript przez Martita Bywalec (2,520 p.)
0 głosów
3 odpowiedzi 6,426 wizyt
–1 głos
2 odpowiedzi 840 wizyt

93,006 zapytań

141,972 odpowiedzi

321,254 komentarzy

62,345 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

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...