🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.php
Article #231965

Re: Javascript Argument funkcji

#231965
From: Marek S
Date: Thu, 22 Feb 2018 16:00
67 lines
3452 bytes
W dniu 2018-02-22 o 08:27, konsul41@wp.pl pisze:

> Piszę "Applikację" SPA i nie ma sensu historia przeglądarki (wszystkie 
> podstrony są ładowane dynamicznie do DIV, główny adres nie zmienia się).+

Nie lepiej mieć wtedy iframe'a? Nie będzie kłopotu z URLami. To tak na 
marginesie bo poza wątkiem.

> Poszukuję pomysłu na coś w rodzaju historii na stronie.
> w jednym z div mam dwa przyciski jeden w tył, a drugi w przód.
> Jak w prosty sposób zrobić coś w rodzaju historii do której tylko 
> nieliczne podstrony mogą dodawać "linki" gdzie można wrócić.

 > (...) Nie wiem czy to dobry pomysł i jak to zrobić. Raczkuję dopiero w
 > Javascript.
 > A może można to lepiej zorganizować?

Ok, rozumiem. Tą pseudo-historię możesz trzymać gdzie chcesz - 
cookies/magazyn. To jest ok. Ja bym to zrobił zupełnie inaczej.

Po pierwsze pakowanie fragmentów HTML'a, kodu JS z nim powiązanego itp. 
jako kroków w historii to chory pomysł. Moim zdaniem krok historii 
powinien być obiektem np:

krok={url_powrotu:xxx, cecha1:xxx, cechaN:xxx ...}

"Cecha" to jakiś parametr jeśli w ogóle go potrzebujesz. Potem 
poszczególne kroki byłyby umieszczane w tablicy:

krkoki=[];
kroki.push(krok1);
kroki.push(krok2);

...i taki obiekt gdzieś tam, gdzie chcesz zapisywany i odczytywany. Zero 
HTMLa, zero jakiś dziwactw - tylko dane.

Po drugie.
Rysowanie historii w dokumencie HTML powinno odbywać się z poziomu JS w 
postaci odtwarzania kroków w/w tablicy i DYNAMICZNEGO kreowania 
poszczególnych składowych. Zapomnij o innerHTML. Np. jeśli krok ma 
wyglądać jako:

<section id="historia">
   <div class="krok"></div>
   <div class="krok"></div>
   <div class="krok"></div>
   ...
</section>

To użyj

document.createElement("div");

Przypisz klasę, która określi wygląd, użyj addEventListener("click") do 
uwrażliwienia na kliknięcie, przypisz obrazek do tła tego DIVa i/lub 
dodaj tekst do DIVa. Potem go appenduj do elementu "historia". I tak w 
pętli po wszystkich elementach historii za pomocą for...of.

Albo inaczej: przeczytaj najpierw jakiś podręcznik do programowania w 
JS. Przy czym taki, który jest w miarę świeży, najlepiej dotyczący 
ECMA6. Nie chodzi wyłącznie o zapoznanie się z referencjami JS ale 
zasadami posługiwania się tym językiem w kontekście DOM, aplikacji WWW. 
2-3 dni lektury z pewnością sporo rozjaśnią.

-- 
Pozdrawiam,
Marek
Technical Details
Message-ID: <p6mpfn$7c1$1@node1.news.atman.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!.POSTED!not-for-mail
References: <5a8d4ed8$0$658$65785112@news.neostrada.pl> <p6k5os$6mr$1@node2.news.atman.pl> <5a8e70d0$0$557$65785112@news.neostrada.pl>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!.POSTED!not-for-mail
From: Marek S <precz@spamowi.com>
Newsgroups: pl.comp.lang.php
Subject: Re: Javascript Argument funkcji
Date: Thu, 22 Feb 2018 17:00:54 +0100
Organization: ATMAN - ATM S.A.
Lines: 67
Message-ID: <p6mpfn$7c1$1@node1.news.atman.pl>
References: <5a8d4ed8$0$658$65785112@news.neostrada.pl> <p6k5os$6mr$1@node2.news.atman.pl> <5a8e70d0$0$557$65785112@news.neostrada.pl>
NNTP-Posting-Host: 89-69-207-111.dynamic.chello.pl
Mime-Version: 1.0
X-Trace: node1.news.atman.pl 1519315255 7553 89.69.207.111 (22 Feb 2018 16:00:55 GMT)
X-Complaints-To: usenet@atman.pl
NNTP-Posting-Date: Thu, 22 Feb 2018 16:00:55 +0000 (UTC)
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.6.0
In-Reply-To: <5a8e70d0$0$557$65785112@news.neostrada.pl>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit