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

Generowanie losowego tytułu strony po wejściu na nią

Object Storage Arubacloud
+1 głos
120 wizyt
pytanie zadane 23 kwietnia 2022 w JavaScript przez Sic Dyskutant (8,510 p.)

Witam, 

mam za zadanie stworzyć generator losowego napisu na stronie. Wykorzystałem do tego JS, jednak prawdopodobnie nie prawidłowo. Oto kod:

HTML

<header class="splash">
      <div class="splash-inner position-relative">
        <img src="images/background.png" class="w-100" alt="beans of Coffee" />
        <div class="description position-absolute">
          <p class="page-title font-weight-bold" id="home-title">
            HOME OF <span> ORIGINAL TASTES</span>
          </p>
        </div>
        <div class="discover position-absolute text-center">
          <p>DISCOVER</p>
          <i class="icon-arrow btn"></i>
        </div>
      </div>
    </header>

JS-1

import { select, settings } from './settings.js';
import Home from './components/Home.js';

const app = {
  initHome: function () {
    const thisApp = this;

    const homeElement = document.querySelector(select.containerOf.home);
    thisApp.home = new Home(homeElement);
  },

  initData: function () {
    const url = settings.db.url + '/' + settings.db.products;
    this.data = {};
    fetch(url)
      .then((rawResponse) => {
        return rawResponse.json();
      })
      .then((parsedResponse) => {
        this.data.products = parsedResponse;
      });
    console.log(url);
  },

  init: function () {
    const thisApp = this;
    thisApp.initData();
    thisApp.initHome();
  },
};

app.init();

JS-2

import { select } from '../settings.js';

class Home {
  constructor() {
    const thisHome = this;

    thisHome.getElements();
    thisHome.randomTitle();
  }

  getElements() {
    const thisHome = this;

    thisHome.dom = {
      homeTitle: document.querySelector(select.home.homeTitle),
    };
  }

  /* random text for home title */
  randomTitle() {
    const thisHome = this;

    thisHome.titles = [
      'Home of Original Tastes',
      'Real Venezuela, Real Coffee',
      'Taste Real Venezuela',
    ];

    thisHome.randTitle = thisHome.getRandomTitle(0, thisHome.titles + 1);
    thisHome.dom.homeTitle.innerHTML = thisHome.randTitle;

    console.log('titles', thisHome.homeTitleRand);
  }

  getRandomTitle(min, max) {
    return Math.floor(Math.random() * (max - min)) + min;
  }
}

export default Home;

JS-3

export const select = {
  containerOf: {
    home: 'splash',
  },
  home: {
    homeTitle: 'page-title',
  },
};

Proszę o pomoc, próbowałem też przez ID, ale efekt jest ten sam

1 odpowiedź

+2 głosów
odpowiedź 23 kwietnia 2022 przez Wiciorny Ekspert (270,170 p.)
getRandomTitle(min, max) {
   console.log(min,max);
     return Math.floor(Math.random() * (max - min)) + min;
   }

przekazujesz tutaj dokladnie pod wartoscia max nazwe, a nie numer 

(min max) - > 

  • 0, "Home of Original Tastes,Real Venezuela, Real Coffee,Taste Real Venezuela1"
thisHome.titles + 1

to nie zwraca indeksu, powinienes dodac dlugosc 

thisHome.titles.length + 1

idąc dalej przez ten problem nie ustawia Ci tytulów 

np. obiekty wygladaja tak 

{
  dom: {
    homeTitle: null
  },
  titles: ["Home of Original Tastes", "Real Venezuela, Real Coffee", "Taste Real Venezuela"]
}


"titles", undefined

 

komentarz 24 kwietnia 2022 przez Sic Dyskutant (8,510 p.)
Dlaczego tak się dzieje z titles. Ustawiłem tablicy i odniosłem się do niej. W dodatku na stronie zamiast tekstu pojawiają mi się liczby co również jesst dziwne.
komentarz 24 kwietnia 2022 przez Wiciorny Ekspert (270,170 p.)
odniosłeś się do tablicy, a masz przeslac jej dlugosc do oblcizenia a tymczasem przesylasz tablice i dodajesz do niej +1 ... czyli jakbyś przesuwał indeks, tam jest po prostu blad ... stad dalej program sie sypie
komentarz 24 kwietnia 2022 przez Sic Dyskutant (8,510 p.)
edycja 26 kwietnia 2022 przez Sic

Usunąłem dodatkowy indeks, ale nie zmienia to faktu, że

randomTitle() {
    const thisHome = this;

    thisHome.titles = [
      'Home of Original Tastes',
      'Real Venezuela, Real Coffee',
      'Taste Real Venezuela',
    ];

    thisHome.randTitle = thisHome.getRandomTitle(0, thisHome.titles.length);
    thisHome.dom.homeTitle.innerHTML = thisHome.randTitle;

    console.log('titles', thisHome.homeTitleRand);
  }

  getRandomTitle(min, max) {
    console.log(min, max);
    return Math.floor(Math.random() * (max - min)) + min;
  }

jest 'undefined'. 
Nie rozumiem dlaczego tak się dzieje skoro przekazuje tablice do DOM

Podobne pytania

0 głosów
1 odpowiedź 150 wizyt
pytanie zadane 28 września 2021 w JavaScript przez zerakot Obywatel (1,870 p.)
0 głosów
1 odpowiedź 464 wizyt
pytanie zadane 8 marca 2020 w JavaScript przez eMe Początkujący (340 p.)

92,576 zapytań

141,426 odpowiedzi

319,651 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!

...