Skocz do zawartości

[JS] uruchamianie funkcji update() dwa razy


Dinth

Rekomendowane odpowiedzi

Mam kod w JS. W duzym skrócie:

<html>

<script type="text/javascript">
function update(a, b) {
  ....
  blablabla()
}

function blablabla() {
  ....
}
</script>

<body onload="update('a', 'b')">

<script type="text/javascript">
document.write('<form action="" name="form" id="form"');
document.write('<input type="text" name="a_form" value="" />');
document.write('<input type="text" name="b_form" value="" />');
document.write('<input type="button" name="submit" value="Sprawdź" onClick="update(this.form.a_form.value, this.form.b_form.value)" />');
document.write('</form>');
document.close();
</script>

</body>

Funkcja update(a,:) jest uruchamiania poprawnie w <body onload="update('a', 'b')">. Niestety gdy chce ją odswieżyć z wartościami z formularza to dostaje error

update() is not defined (charts.html line 1)
onclick(click clientX=0, clientY=0)

Kombinowałem żeby przenieść <form></form> poza JS tj. do czystego HTML pomiedzy </script> a </body> ale wtedy już wogóle formularza nie wyświetla.

PS. Teraz zauważyłem że w źródle strony wogole nie ma nic co w pliku pojawia się poza <script></script>, nawet <body onload="update('a','b')"> ktore jest wykonywane. Nie rozumiem o co chodzi :D

Tutaj bedzie sygnaturka

Odnośnik do komentarza
Udostępnij na innych stronach

W źródle strony nie widać kodu wygenerowanego za pomocą JS - utrudnia to czasami analizę problemów na stronie (tak jak w tym przypadku).

W Twoim kodzie usunąłem linie "..." w funkcjach update i blablabla, które powodowały błąd JS i dzięki temu funkcje nie były "widoczne". Dla porządku domknąłem też taga form i zamknąłem taga html. I zadziałało...

<html>
<script type="text/javascript">
function update(a,  {
  blablabla();
}
function blablabla() {
alert("Hello world");
}
</script>

<body onload="update('a', 'b')">

<script type="text/javascript">
document.write('<form action="" name="form" id="form">');
document.write('<input type="text" name="a_form" value="" />');
document.write('<input type="text" name="b_form" value="" />');
document.write('<input type="button" name="submit" value="Sprawdź" onClick="update(this.form.a_form.value, this.form.b_form.value)" />');
document.write('</form>');
document.close();
</script>
</body>
</html>

Prosty program do fakturowania: finansis.pl/faktury

Odnośnik do komentarza
Udostępnij na innych stronach

ale linie ... to proste XMLHttpRequest i pare document.writow.

Znalazlem jednak inny sposob.

usunalem wywolanie blablabla() z update() (a dokladnie z handleHttpResponse) i wywoluje ja w kodzie strony:

update(a, b);
blablabla();

Na chlopski rozum mogl sie gdzies tam zapetlic, jesli jedna funkcja wywolywala druga, a ta druga pisala odnosnik do pierwszej.

problemy z znikajaca funkcja update() zniknely, za to pojawil sie inny co zrobic zeby blablabla() uruchamialo sie po wczytaniu XMLa jesli nie jest przypisany do http.onreadystatechange?

Tutaj bedzie sygnaturka

Odnośnik do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę. Warunki użytkowania Polityka prywatności