Zegar i przekierowanie na następną stronę JAVASCRIPT

0

witam wszystkich,
nie jestem specjalistą od JS, ale potrzebuję kodu na stronę który wyświetli czas w JS i czas będzie płynął od 15minut w dół będzie np w prawym górnym rogu strony żeby go było cały czas widać i po upłynięciu czasu żeby przekierował na kolejną stronę,
potrzebne mi to do testów internetowych
pozdrawiam

i nie da się z tym nic zrobić?

0

Sam coś zrobiłeś, czy liczysz na gotowca?
Poczytaj o location, setInterval i setTimeot

0

dalej mi coś nie wychodzi... mam jakieś błędy;( mógłbym kogoś prosić o pomoc?

0

mam coś takiego
var czas = {
message : 'Czas dobiegł końca.',
init : function() {
var ktory = this;
setTimeout(function(){alert(ktory.message);},900 000);
}
}

window.onload = function() { czas.init() };

po 15 minutach wyświetla mi się komunikat,
teraz mam pytanie jak wyświetlić ten płynący czas na stronie w postaci mm:ss
i czy jak będę przekazywał go na następną stronę to będą przekazywane $_POST?
pozdrawiam i proszę bardzo o pomoc

1
function Timer(timetoend, onchange, onend){
	var timeToEnd = timetoend;
	var onEnd = onend;
	var interval;
	
	var onChange = function(){
		timeToEnd--;
		onchange(Math.floor(timeToEnd/60), timeToEnd%60);
		
		if (timeToEnd<=0){
			clearInterval(interval);
			onEnd();
		}
	}
	
	interval = setInterval(onChange, 1000);
}

var zmianaCzasu = function(minuty, sekundy){
	document.title = minuty + ':' + sekundy;
}

var koniec = function(){
	alert('Koniec ;]');
}

//10 to ilość sekund do końca, wpisz tutaj własny czas
var timer = new Timer(10, zmianaCzasu, koniec);

Powinno pomóc. zmianaCzasu, to funkcja wywoływana co sekundę w celu aktualizacji czasu, koniec, to funkcja wywoływana w momencie zakończenie działania. Resztę powinieneś zrozumieć.

0

ślicznię dziękuję za odpowiedź, a teraz kolejne pytania

function Timer(timetoend, onchange, onend){
        var timeToEnd = timetoend;
        var onEnd = onend;
        var interval;
 
        var onChange = function(){
                timeToEnd--;
                onchange(Math.floor(timeToEnd/60), timeToEnd%60);
 
                if (timeToEnd<=0){
                        clearInterval(interval);
                        onEnd();
                }
        }
		interval = setInterval(onChange, 1000);
}
 
var zmianaCzasu = function(minuty, sekundy){
**		var czas = minuty + ':' + sekundy;
        document.getElementById("czas").value = czas;**
}
 
var koniec = function(){
		alert("Koniec");
		**$.ajax({
		type: "POST",
		url: "koniec_testu.html",
		dataType: "script";
		});**
}

var timer = new Timer(900, zmianaCzasu, koniec);

i dlaczego nie działają var koniec oraz var zmianaCzasu
a dziękuję za pomoc w kodzie.
jestem ogromnie wdzięczny

1
dataType: "script";

Spróbuj bez średnika.

.value

Może .innerHTML ?

PS: Ale dodajesz jQuery (wnioskuję po $.ajax) ?

0
Patryk27 napisał(a)
dataType: "script";

Spróbuj bez średnika.

.value

Może .innerHTML ?

PS: Ale dodajesz jQuery (wnioskuję po $.ajax) ?

no innerHTML działa, ale czytałem, że z tego się już nie korzysta, ale innerHTML działa z tego co widzę.
a niestety bez średnika nie działa,
chodzi o to że chce przekazać zaznaczone odpowiedzi metodą POST gdy skończy się czas.
pozdrawiam

1

Ale Ty nie rozumiesz chyba idei przesyłania danych asynchronicznie. Za pomocą wymienionej przeze mnie metody możesz przesłać dane na serwer, ale nie odświeżasz strony. Poza tym w swoim kodzie nigdzie nie przesyłasz danych - musisz przypisać dane do parametru data. I jeszcze jedno - dataType, to format danych zwróconych przez serwer.

0

ja mam napisaną aplikację w php,
to może idzie zrobić coś takiego że po upłynięciu czasu javascript przycisnie on przycisk dalej i wtedy dane prześle z formularzy PHP?!
pozdrawiam

1

To w czym masz napisaną część backendową ma najmniejsze znaczenie. Sprawdź to http://api.jquery.com/submit/.

0

to jest świetne rozwiązanie, ale nie wiem czy ja to dobrze robię,
var koniec = function(){
alert("Koniec");
$("form").submit(function() {
window.location='wyniki.html';
});
}
w tej sposób

1

Twój kod sprawia, że po kliknięciu na przycisk wyślij otwiera się strona docelowa bez przesłania danych. Jeśli o to Ci chodziło, to dobrze robisz, ale wiem, że nie o to Ci chodziło. Przede wszystkim naucz się czytać dokumentację, bo przekopiowujesz kod, który ma zupełnie inne zastosowanie.

Masz jakiś tam formularz:

<form id="moj-super-formularz" method="post" action="strona-docelowa.php">
    <input type="text" name="zmienna" />
</form>

Kiedy chcesz zasymulować wciśnięcie przycisku wyślij wywołujesz taki kod:

$('#moj-super-formularz').submit();

Dane zostaną przesłane na adres podany w atrybucie action formularza.

0

według twoich uwag i podpowiedzi za które jestem wdzięczny

<body>

<form id="pytania" method="post" action="wyniki.php"> <input type="submit" /> </form> </body>

var koniec = function(){
alert("Koniec");
$('#pytania').submit();
}

mam takie dwa kody?! i mi to nie działa dlaczego?
pozdrawiam

0
STaN007 napisał(a)

mam takie dwa kody?! i mi to nie działa dlaczego?

CO CI NIE DZIAŁA? Naucz się opisywać swoje problemy, inaczej nikt Ci nie pomoże ich rozwiązać. Poza tym jeśli chcesz przesyłać jakieś dane, to muszą się one znaleźć w formularzu. ROZUMIESZ? W Twoim formularzu KOMPLETNIE NIC NIE MA. Muszą w nim być jakieś dane, żeby przeglądarka wiedziała co ma wysłać, bo inaczej skąd miałaby to wiedzieć. To tak jakbyś położył jabłko na komputerze i w notatniku napisał ile waży jabłko. Dopóki nie podłączysz wagi do komputera i nie uruchomisz odpowiedniego oprogramowania komputer nie będzie wiedział, że chcesz, żeby zważył jabłko.

<form method="post" action="plik.php">
  <input type="text" name="zmienna" value="wartość" />
</form>

Przesłanie powyższego formularza sprawi, że w skrypcie będziesz miał zmienną $_POST['zmienna'] przechowującą wartość.

0

oki w inny sposób, wiem, że nie ma danych w PHP programuje już 2 lata i trochę sie na tym znam, nie przekierowywuje mnie na stronę z wynikami.php, nie wiem dlaczego a to że nie ma danych to sobie zdaję z tego sprawę. myślałem że skoro cały czas piszemy o przenoszeniu na kolejna stronę to zrozumiesz, ale będę dokładniejszy na przyszłość

0

Bo pewnie masz gdzie indziej błąd. Funkcja koniec się w ogóle wykonuje? Wpisz sobie na 4programmers.net w konsoli javascript $('#box-search form').submit(); i zobacz co się stanie.

STaN007 napisał(a)

oki w inny sposób, wiem, że nie ma danych w PHP programuje już 2 lata i trochę sie na tym znam, nie przekierowywuje mnie na stronę z wynikami.php, nie wiem dlaczego a to że nie ma danych to sobie zdaję z tego sprawę. myślałem że skoro cały czas piszemy o przenoszeniu na kolejna stronę to zrozumiesz, ale będę dokładniejszy na przyszłość

Gdybyś programował 2 lata, to byś wiedział, że może nie działać tysiąc różnych rzeczy i na pewno byś nie napisał nie działa tylko byś się jasno określił, umiałbyś czytać dokumentację jQuery i napisałbyś, czy wyświetla się okienko z napisem koniec.

0

tak programuje w PHP dwa lata, a funkcja koniec się wykonuje,
cały kod wygląda w ten sposób

 
<html>
<script type="text/javascript">
```javascript
function Timer(timetoend, onchange, onend){
        var timeToEnd = timetoend;
        var onEnd = onend;
        var interval;
 
        var onChange = function(){
                timeToEnd--;
                onchange(Math.floor(timeToEnd/60), timeToEnd%60);
 
                if (timeToEnd<=0){
                        clearInterval(interval);
                        onEnd();
                }
        }
		interval = setInterval(onChange, 1000);
}
 
var zmianaCzasu = function(minuty, sekundy){
		var czas = minuty + ':' + sekundy;
        document.getElementById("czas").innerHTML = czas;
}
 
var koniec = function(){
		alert("Koniec");
		$('#pytania').submit();
}

var timer = new Timer(3, zmianaCzasu, koniec);
</script> <body>

<form id="pytania" method="post" action="wyniki.php"> <input type="submit" /> </form> </body> </html> ```

i tutaj funkcja koniec się wykonuje, wyświetla się alert, ale póxniej nie ma przekierowania na inną stronę, czas się wyświetla i wszystko inne działa,

pozdrawiam

0

Nie wygłupiaj się ;) Po dwóch latach umiałbyś skorzystać z gotowca, którego dostałeś. W php jak korzystasz z jakiejś zewnętrznej biblioteki, to dołączasz ją prawda? Ten przykład z ważeniem jabłka mógłbym przytoczyć ponownie tutaj. Przed swoim skryptem dołącz do kodu html linijkę

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script>

Poza tym ten kod zadziała, ale i tak lepiej uruchomić go dopiero w momencie załadowania szkieletu dokumentu. Za pomocą jQuery można to wykonać tak:

$(document).ready(function(){
  //w tym miejscu umieszczasz instrukcje uruchamiane w momencie załadowania szkieletu dokumentu
});

lub krócej

$(function(){
  //to samo, co wyżej - tutaj zastosowałem po prostu skrócony zapis
});

jeśli jednak chcesz wykonać jakiś kod w momencie załadowania całej strony robisz tak:

$(window).load(function(){
  /*
  kod znajdujący się tutaj zostanie uruchomiony dopiero w momencie załadowania wszystkich elementów
  strony, czyli obrazków i innych dołączonych plików
  */
});

PS Ja w php programuję krócej niż 2 lata, tzn. ponad 2 lata temu zdarzyło mi się coś przeczytać o tym języku, lub napisać skrypt wykonujący instrukcję echo, ale tego programowaniem nie mogę nazwać. Zastanów się ile Ty tak naprawdę programujesz ;)

0

No rozumiem, tak faktycznie brakowało biblioteki, a zdarzyło mi się nie raz dołączać bibliotekę internetową choćby do tworzenia raportów w postaci PDF,
ale dziękuję za pomoc:) i jestem Ci bardzo wdzięczny
teraz wszystko hula jak należy:)

1 użytkowników online, w tym zalogowanych: 0, gości: 1