ďťż

[JS] Loading Wczytywanie?

       

Podstrony


telcocafe

Wpadłem zupełnie niepotrzebny światu pomysł, ale nie odpuszcze dopóki tego nie napisze :D Mianowicie rozchodzi sie o to, że mam kod:
<html> <head> <meta http-equiv="Content-type" content="text/html; charset=ISO-8859-2" /> </head> <body onload="wczytywanie()"> <script> <!-- function wczytywanie() { for (i=0; i<=100; i++) { document.write(i+"% "); } } --> </script> </body> </html>

Funkcja chodzi... w połowie ^^... Wyświetla mi się 1% 2% 3% 4% i tak dalej, a chodzi mi o to żeby wyświetliło się 1% (potem znikało?) 2% i tak dalej :) Miałem długą przerwę, wiec 3/4 nie pamiętam, co z resztą widać :D Proszę o ile to możliwe o poprawki w kodzie :)
P.S. Próbowałem z document.clear(this); ale takiego polecenia pewnie w ogóle nie ma. Może coś z setTimeout(); ?



Np:
<html> <head> <meta http-equiv="Content-type" content="text/html; charset=ISO-8859-2" /> </head> <body onload="wczytywanie()"> <script> <!-- function wczytywanie() { for (i=0; i<=100; i++) { document.getElementById('loader').innerHTML = i + "%"; } } --> </script> <div id="loader"></div> </body> </html>

Dziala poprawnie, tzn. przed wyswietleniem nowej wartosci wywala stara.

Btw. Jak dasz np:
document.getElementById('loader').innerHTML = document.getElementById('loader').innerHTML + i + "%";
To wyswietli all 100 wartosci.
Użytkownik Poszukiwacz edytował ten post 11 kwiecień 2007, 20:37
Ja jednak proponuje tak, bo inaczej efektów nie będzie widać:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Percent Counter</title> <meta name="author" content="reVis" /> <script> var iter = 0 function Counter(id) { document.getElementById(id).innerHTML = iter+'%'; if(iter++<100) setTimeout('Counter(\''+id+'\')',100); } </script> </head> <body onload="Counter('count');"> <span id="count"></span> </body> </html>

Dzięki wielkie, właśnie o to chodziło. :) Wpadłem też na coś takiego:
<html> <head> <meta http-equiv="Content-type" content="text/html; charset=ISO-8859-2" /> </head> <body onload="wczytywanie()"> <script> <!-- function wczytywanie() { for (i=1; i<=100; i++) { document.forma.ladowanie.value=(i+"%"); setTimeout("",2000); } } --> </script> <form name="forma"> <input type="text" name="ladowanie" /> </form> </body> </html>
Jak można zobaczyć chodzi, ale za szybko i funkcja sie powtarza... linijka setTimeout miała być zrobiona po to, żeby opóźnić ładowanie %, jednak nie wiedziałem co wpisać, bo jak wpisałem funkcję to była i tak szybko, tylko po 100% opóźniała sie o te 2s i od początku :P
Użytkownik Eneje edytował ten post 11 kwiecień 2007, 20:56


Nie no w ten sposób to tego nie zrobisz. Funkcji setTimeout(), nie działa jak sleep() czy coś w tym stylu. Jeżeli chcesz uzyskać efekt opóźnienia, to musisz stworzyć pętle rekurencyjną tak jak ja to zrobiłem, samą pętlą for Ci się nie uda.
A uściślając setTimeout przyjmuje 2 parametry. Pierwszy to string z nazwą funkcji i jej parametrami który ma wywołać, a drugi to dane opóźnienie z jakim zostanie wywołana funkcja z parametru pierwszego.

Aha, więc jednak źle kombinowałem. Uściślając Twoje uściślenie to prawie wiedziałem o tych 2 parametrach. :P Znasz może jakąś dobrą stronę z jakimś kompetentnym tutorialem? Bo jak trochę przeglądam te tutki, to nie ma czegoś takiego od początku do końca dobrze z przykładami, tylko są wyrwane z kontekstu polecenia z (nie zawsze) przykładem. Nie koniecznie online. :) Albo może polecasz jakąś książkę? Bo nie chciałbym kupić książki w której nic co mi sie przyda nie znajdę.
Użytkownik Eneje edytował ten post 12 kwiecień 2007, 16:49
Hmmm...
http://developers.mozilla.org/
http://w3schools.com/
Może Ci się przydadzą ;)

Nie chcę zakładać nowego tematu, a mam inny problem. Czy da się zrobić coś takiego w javascript albo dhtml, że jeśli mam formularz i chcę wysłać/zapisać dane z formularza na e-mail/do pliku (bezpośrednio)? Bo mam kod:
<html> <head> <meta http-equiv="Content-type" content="text/html; charset=ISO-8859-2" /> <script> <!-- send = false; function pytanie() { ok = confirm("Czy chcesz aby formularz zostal wyslany?"); if (ok) send = true; return send; } //--> </script> </head> <body> <form method="post" action="mailto:***@o2.pl" onsubmit="return pytanie()"> <input type="text" /><br /> <input type="password" /><br /> <input type="submit" value=" OK " /> </form> </body> </html>
Ale tutaj odpala mi się outlok express, a chciałbym albo żeby od razu wysyłał mi sie na e-mail, albo zapisywał gdzieś w pliku :)

Generalnie to w samum JS coś takiego nie jest możliwe. Zapis action="mailto:... po prostu wywołuje domyślny program pocztowy użytkownika, więc z tym nic innego nie zrobisz. Natomiast do pliku też nie będziesz miał jak zapisać danych bo JS po pierwsze jest językiem client-side, a po drugie nie ma w nim żadnych funkcji do obsługi wczytywania czy zapisywania plików. Powinieneś zainteresować się którymś z języków server-side: PHP, Python itd...

ps. ewentualnie można wykorzystać AJAX, ale tak czy siak będzie potrzebny których z języków skryptowych wykonywanych po stronie serwera.

Jeśli za pomocą AJAXa chcesz to zrobić to musisz mieć dostępne po pierwsze język PHP na serwie, po drugie dostępną funkcję mail() (jak to ovh to na pewno jest wyłączona) chociaż są pewne obejścia jak phpmailer (poszukaj w google) oraz biblioteke Sajax (też poszukaj w google chociaż możesz znaleźć inną np. advAJAX ale są one w pewnym stopniu podobne). Dobra oto kod:

index.php
<?php include('Sajax.php'); function wyslij_maila($tekst) { mail('adres@docelowy', 'subject', $tekst, "From: nadawca@$SERVER_NAME", "-fnadawca@$SERVER_NAME"); } sajax_init(); sajax_export('wyslij_maila'); sajax_handle_client_request(); ?> <html> <head> <meta http-equiv="Content-type" content="text/html; charset=ISO-8859-2" /> <script> <!-- function wyswietl_wynik(odpowiedz) { alert('Mail został wysłany'); } function pytanie() { _text_m = document.getElementById('text_mail'); x_wyslij_maila(_text_m.value, wyswietl_wynik); } <?php sajax_show_javascript(); ?> //--> </script> </head> <body> <input type="text" id="text_mail" /><br /> <input type="button" onclick="pytanie()" value="Wyślij" /> </body> </html>

Pisane na sucho więc może gdzieś być błąd

Błagam o pomoc... Proszę o wysłanie/napisanie po POLSKU jak skonfigurować apache. Mam zainstalowane Apache 2.0.55, PHP 5.1.1 i CoreEditor. Jeśli chcę uruchomić przykładowy dokument *.php to program prosi mnie o wskazanie interpretera, problem w tym że nie wiem jak sie co obsługuje. Z angielskich stron mi nie wychodzi więc nalegałbym żeby to było po polsku :(:(:(
Użytkownik Eneje edytował ten post 13 kwiecień 2007, 21:01
Nie możesz tak po prostu otworzyć (uruchomić) plik PHP. Musisz otworzyć go spod poziomu serwera - np. http://localhost/plik.php - wtedy przejdzie on przez apache'a i zostanie sparsowany przez PHP.
Bo plik PHP wykonywany jest właśnie przez server, a nie jak HTML interpretowany przez przeglądarkę :)

Odwołuje się zatem do postu #8, w którym miałem problem z napisaniem skryptu wysyłającego formularz na pocztę/do pliku. Skoro mam interpreter php, to mam pytanie, czy da się zrobić to w samym php? Czy jednak trzeba AJAXEM czy jakimiś innymi :)
Użytkownik Eneje edytował ten post 14 kwiecień 2007, 13:06
W formie dajesz actiona do pliku .php, w którym używasz funkcji mail() ;)
Na localhoście czasem nie chodzi. Potestuj :)

Poza tym, skorzystaj z witryny http://www.php.net :)

znalazłem polecenie fwrite($file, $tekst, $maxLen);
Funkcja ta zapisuje tekst podany jako 2 parametr do pliku identyfikowanego przez $file. 3 parametr jest opcjonalny i określa maksymalną długość tekstu, jaka może zostać zapisana.

Jak zrobić w poniższym kodzie, żeby do starej treści pliku dopisywało nową?
<? $tekst = $_GET['tresc']; $file = fopen("nazwa_pliku.txt","w"); flock($file,2); fwrite($file, $tekst); fwrite($file,"\n"); flock($file,3); fclose($file); echo "<form action=\"zapisywanie.php\" method=\"get\">"; echo "<input type=\"text\" name=\"tresc\" />"; echo "<input type=\"submit\" value=\" SAVE \" />"; echo "</form>"; ?>
Użytkownik Eneje edytował ten post 15 kwiecień 2007, 12:09
<? $tekst = $_GET['tresc']; $file = fopen("nazwa_pliku.txt","a"); flock($file,2); fwrite($file, $tekst); fwrite($file,"\n"); flock($file,3); fclose($file); echo "<form action=\"zapisywanie.php\" method=\"get\">"; echo "<input type=\"text\" name=\"tresc\" />"; echo "<input type=\"submit\" value=\" SAVE \" />"; echo "</form>"; ?> :D Proste, nie? :P
Wystarczy otworzyć plik z trybem do zapisu na końcu pliku i gotowe :D Manual

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • nvm.keep.pl

  • Sitedesign by AltusUmbrae.