Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Dynamiczne tworzenie obiektów (JS)
Sexee
post 31.03.2012, 22:53:54
Post #1





Grupa: Zarejestrowani
Postów: 48
Pomógł: 0
Dołączył: 31.03.2012

Ostrzeżenie: (0%)
-----


Cytat
<script type="text/javascript" language="javascript">

function createDiv()
{
var element = document.createElement("div");

element.id = "item";
element.className = "item";
element.innerHTML = "xd"
document.body.appendChild(element);
element.style.width = '43';
element.style.height = '43px';
element.style.backgroundColor = '#FF6633';

var p = document.getElementById('sex');
var nowyNod = document.createTextNode('a');
p.insertBefore(element, item);
}
</script


Cześć, przeglądałem forum i napotkalem na czyjś post w którym była dynamiczna metoda tworzenia obiektów. Zacząłem się tym interesować jednak stoję na minie. Stworzony obiekt po wygenerowaniu tworzy się w dwóch miejscach - w divie którym chciałem i tym niechcianym. Nie mam pojęcia jak to naprawić, dlatego prosiłbym o pomoc.
Go to the top of the page
+Quote Post
mortus
post 1.04.2012, 09:12:59
Post #2





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

Ostrzeżenie: (0%)
-----


[JAVASCRIPT] pobierz, plaintext
  1. // ...
  2. document.body.appendChild(element); // tu wstawiasz raz
  3. // ...
  4. p.insertBefore(element, item); // a tu drugi
[JAVASCRIPT] pobierz, plaintext
Go to the top of the page
+Quote Post
Sexee
post 1.04.2012, 11:07:59
Post #3





Grupa: Zarejestrowani
Postów: 48
Pomógł: 0
Dołączył: 31.03.2012

Ostrzeżenie: (0%)
-----


Yhm, nie zauważyłem. Teraz mam taki kod:

Cytat
<script type="text/javascript" language="javascript">

function createDiv()
{
var element = document.createElement("div");

element.id = "item";
element.className = "item";
element.innerHTML = "xd"
element.style.width = '32';
element.style.height = '32px';
element.style.backgroundColor = '#c3c3c3';

var p = document.getElementById('sex');
var nowyNod = document.createTextNode('a');
p.insertBefore(element);
}

</script>


I chciałbym zapytać, jak zrobić by te obiekty potem się wczytały? Że gdy go utworzę to on będzie tam na stałe. Czy można zrobić do tego funkcję, że z pliku oblicza wartość i ona wczytuje właśnie takie elementy?
Go to the top of the page
+Quote Post
mortus
post 1.04.2012, 11:15:28
Post #4





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

Ostrzeżenie: (0%)
-----


Cytat(Sexee @ 1.04.2012, 12:07:59 ) *
I chciałbym zapytać, jak zrobić by te obiekty potem się wczytały? Że gdy go utworzę to on będzie tam na stałe.

Nie wiem, co rozumiesz przez "na stałe". Można przypisać odpowiednią funkcję metodzie window.onload, ale wszystkie elementy generowane przez tę funkcję będą generowane po każdym wejściu na strone, czy to przez wpisanie adresu, czy przez odświeżenie. Żeby treść była później stała to musiałaby być generowana dynamicznie np. z bazy danych i aktualizowana po każdym wywołaniu wspomnianej funkcji. Zarys w JS:
[JAVASCRIPT] pobierz, plaintext
  1. function createElements() {
  2. // tutaj wszystkie obliczenia, ustawienie parametrów i wywołanie w pętli funkcji tworzącej pojedynczy element
  3. }
  4. window.onload = createElements;
[JAVASCRIPT] pobierz, plaintext
Go to the top of the page
+Quote Post
Sexee
post 1.04.2012, 11:30:01
Post #5





Grupa: Zarejestrowani
Postów: 48
Pomógł: 0
Dołączył: 31.03.2012

Ostrzeżenie: (0%)
-----


Dokładnie o to chodzi, że wczytuje z czegoś - a na stałe to znaczy że nie tak jak obecnie, że usuwa stworzony obiekt po odświeżeniu a wręcz przeciwnie. Tylko nie wiem jak zrobić taką funkcję, a nawet gdzie szukać.
Go to the top of the page
+Quote Post
mortus
post 1.04.2012, 12:05:08
Post #6





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

Ostrzeżenie: (0%)
-----


Jeśli aktualizacja tej treści ma się odbywać automatycznie, to trzeba posłóżyć się AJAX-em, który prześle aktualną treść do odpowiedniego skryptu PHP. Zadaniem tego skryptu PHP będzie aktualizacja treści, czy to w bazie danych, czy w pliku... przy czym z plikami będzie trochę zabawy. No i co najważniejsze, skrypt JS po ponownym uruchomieniu strony (wejście na stronę lub jej odświeżenie) nie może wstawiać tej samej treści jeszcze raz, a to oznacza, że musi być w jakiś sposób sparametryzowany.

Najlepiej by było, gdyby aktualizowana treść znajdowała się zawsze w jakimś głównym kontenerze (div-ie), wtedy wyglądałoby to mniej więcej tak:
  1. function updateSource(newContent)
  2. // tutaj AJAX wysyłający newContent do pliku PHP
  3. }
  4. function createElements() {
  5. // tutaj obliczenia i wstawianie nowych elementów do kontenera <div id="content">
  6. // a później aktualizacja przez AJAX
  7. var newContent = document.getElementById('content').innerHTML;
  8. updateSource(newContent);
  9. }
  10. window.onload = createElements;
  11. </script>
  12. </head>
  13. <div id="content">
  14. <!-- ten element będzie dynamicznie zmieniany przez funkcję createElements -->
  15. </div>
  16. </body>

Natomiast, jak już pisałem, skrypt PHP powinien modyfikować źródło, czyli albo odpowiednie pliki, albo tabelę w bazie danych.

Ten post edytował mortus 1.04.2012, 12:12:08
Go to the top of the page
+Quote Post
Sexee
post 1.04.2012, 12:29:48
Post #7





Grupa: Zarejestrowani
Postów: 48
Pomógł: 0
Dołączył: 31.03.2012

Ostrzeżenie: (0%)
-----


Cytat
Najlepiej by było, gdyby aktaulizowana treść znajdowała się zawsze w jakimś głównym kontenerze (div-ie), wtedy wyglądałoby to mniej więcej tak:

No tak, i właśnie tak mam zamiar zrobić.

Cytat
Natomiast, jak już pisałem, skrypt PHP powinien modyfikować źródło, czyli albo odpowiednie pliki, albo tabelę w bazie danych.

Yhm, to raczej podstawa.

A jeżeli chodzi o AJAX'a - nie znam nawet w nim jednej funkcji więc to raczej sobie odpuszczę mimo iż jego możliwości są ogromne.

---------------------------------

[JAVASCRIPT] pobierz, plaintext
  1. <script>
  2.  
  3. function createElements()
  4. {
  5. //tutaj wczytywanie
  6. var newContent = document.getElementById('LOL').innerHTML;
  7. updateSource(newContent);
  8. }
  9. window.onload = createElements;
  10. </script>
[JAVASCRIPT] pobierz, plaintext


Wszystko okej, ale ciekawi mnie jak zrobić zapis i odczyt. Potrafię tylko na plikach, bazy danych to nie temat na dziś. Może ktoś by umiał coś podpowiedzieć, pomóc?
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 15.08.2025 - 03:30