Problem z setinterval

Odpowiedz Nowy wątek
2011-09-22 14:13
0

Witam,
Posiadam mały problem z funkcją setinterval a mianowicie działa jeśli jej wywołanie wrzucę w znaczniki skryptowe a nie do końca jeśli wywołanie generuję funkcją wywoływaną przez zdarzenie onclick buttona.
Jeśli wywołuję ją przez onclick to wygląda na to, że wykonuje się raz (pojawia się jedna kreseczka |) a później strona/div? jakby sie przeładowywał i nie działa więcej. Proszę nie sugerować się funkcją wykonywaną w interwałach bo jest tylko przykładowa. Docelowo będzie doczytywała informacje z bazy danych.

Ktoś ma pomysł czym to jest spowodowane?

pozdrawiam panter182

<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=Windows-1250" /> <meta http-equiv="Content-Language" content="pl" /> ``` <script type="text/javascript" src="skrypty/wybor.js"></script> ```javascript <script type="text/javascript"> var idInterwalu; function odliczaj() { idInterwalu = setInterval('doczytaj()', 600); alert('funkcja odliczaj dziala'); } function doczytaj() { document.getElementById("informacja").innerHTML += "|"; } function zatrzymaj() { clearInterval(idInterwalu); } //idInterwalu = setInterval('doczytaj()', 600); tutaj dam to dobrze dziala </script> ``` ```php </head> <body>






<?php if((isset($_SESSION['zalogowano'])) && ($_SESSION['zalogowano']=='tak')) { ?><form action="index.php?id=skrypty/zarzadzanie" method="POST">
Komenda System:</td> <input type="text" name="komendasystem"></td> <input type="submit" value="Wykonaj" onclick="odliczaj()" name="wsystem" class="button"></td> <input type="submit" value="Zatrzymaj" onclick="zatrzymaj()" name="wsystem" class="button"></td> </tr> Komenda MYSQL:</td> <input type="text" name="komendasql"></td> <input type="submit" value="Wykonaj" name="wbaza" class="button"></td> </tr> </table> </form> <?php if (isset($_POST['wsystem'])) { include "skrypty/baza.php"; if($_POST['komendasystem']!="") { $ins = mysql_query("INSERT INTO `KOMENDA` set komenda='".$_POST['komendasystem']."'"); echo "Komenda systemowa wykonana"; } ?> <form> Wybierz część <select name="rekord" onchange="showPart(this.value)"> <option value="logowanie">logowanie</option> <option value="czujniki">czujniki</option> <option value="komenda">komenda</option> </select> </form>
Ładowanie:
<?php } elseif (isset($_POST['wbaza'])) { include "skrypty/baza.php"; if($_POST['komendasql']!="") { $result = mysql_query("".$_POST['komendasql'].""); echo "Komenda SQL wykonana"; } if($_POST['komendasql']!="") { $mysql_num = mysql_num_rows($result); // liczy ilosc wierszy if($mysql_num >0) { //cos tam cos tam print "\n"; while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) { print "\t\n"; foreach ($line as $col_value) { print "\t\t$col_value</td>\n"; } print "\t</tr>\n"; } print "</table>\n"; } else { $result = mysql_query("select * from komenda"); print "\n"; while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) { print "\t\n"; foreach ($line as $col_value) { print "\t\t$col_value</td>\n"; } print "\t</tr>\n"; } print "</table>\n"; } } } } else { echo "Nie posiadasz uprawnień do zarządzania tym modułem :)"; } ?> </body> </html> ```

Pozostało 580 znaków

2011-09-22 14:46
0

pomimo jednego ostrzeżenia (sprawdź sobie w "Code" na dole po lewej) to wszystko jest dobrze, u mnie działa, tutaj działa: http://jsbin.com/afexop/edit#preview

Być może coś innego przerywa Ci działanie skrytpu. Firebuga, bądź pochodnych dla innych przeglądarek używasz? Pokażą Ci błędy jak coś.


Pozostało 580 znaków

2011-09-22 15:42
0

Dzięki za zainteresowanie tematem.
Problem o którym pisałeś juz rozwiązałem chodziło o forme przekazywania nazwy funkcji powinno być idInterwalu = setInterval(doczytaj, 600); a nie idInterwalu = setInterval("doczytaj()", 600)
jednakże nie pomogło to w żadnen sposób i dalej z jakiegoś powodu nie działa. Stronka do testów stoi na wampie a problem pojawia się zarówno w Operze jak i w FF i IE.
Gdyby w ogole nie dzialalo to pol biedy bo predzej bym sobie poradzil, ale to nie dziala tylko wywoływane z funkcji poza funkcja jako skrypt smiga normalnie. :/

Co mówi konsola JS? - Patryk27 2011-09-22 15:55
w firebugu czysta a efektu wykonania skryptu nie widac - panter182 2011-09-22 16:05

Pozostało 580 znaków

2011-09-23 11:37
0

Witam,
niestety dalej nie udalo mi się rozwiązać tego błędu.
W konsoli Opery znalazłem błąd:

[2011-09-23 11:11:43] JavaScript - http://localhost/system/index.php?id=skrypty/zarzadzanie
Uncaught exception: TypeError: Cannot convert 'document.getElementById("informacja")' to object
Error thrown at line 12, column 2 in doczytaj() in http://localhost/system/index.php?id=skrypty/zarzadzanie:
document.getElementById("informacja").innerHTML += "|";

zmieniłem na
var tmp = document.getElementById("informacja");
tmp.innerHTML += "|";

ale również nie pomogło

Pozostało 580 znaków

2011-09-23 12:37
pan kuba
0

Nie przeładowywuje Ci strony, jak klikniesz na przycisk "Odliczaj"? Ten przycisk jest typu submit, co znaczy że wywołuje metodę submit formularza...

Pozostało 580 znaków

2011-09-23 12:52
0

Dzięki!
Faktycznie jak dam type=button to smga dobrze tylko pytanie jak zrobić żeby przycisk działał zarówno jako submit i button?

Pozostało 580 znaków

2011-09-23 15:33
0

Spraw, żeby button był normalnym przyciskiem wysyłającym formularz, a w formularzu dodaj zdarzenie onformsubmit:

<form action="index.php?id=skrypty/zarzadzanie" onsubmit="jakastamFunkcjaWJS();" method="POST">

Dzięki temu cały JS wykona się nawet jeśli użytkownik wciśnie Enter zamiast klikać na przycisk.


Women were the reason I became a monk - and, ah, the reason I switched back...
edytowany 1x, ostatnio: Demonical Monk, 2011-09-24 00:14
chyba raczej "onsubmit"... pierwsze słyszę o "onformsubmit" - unikalna_nazwa 2011-09-24 00:10
Możliwe, w sumie to już na dobrą sprawę dawno nie "webdevelopowałem"... Poprawiony post nad komentarzem. - Demonical Monk 2011-09-24 00:14

Pozostało 580 znaków

2011-09-23 17:44
0

Dzięki za pomoc. Tak juz tez próbowałem i też nie działa. Rozwiązałem to na około zrobiłem zwykły przycisk type = button i wywołanie funkcji js gdzie doczytuje sobie dane z formularza i wywołuje funkcje setinterval po czym Ajaxem wykonuje skrypt php.

Pozdrawiam!

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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