Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wywołanie funkcji js w elemencie załadowanym jako innerHTML
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
gargamel
Mam zewnętrzny plik .js w którym mam zadeklarowane 2 funkcje:
  1. function funkcja1(id)
  2. {
  3. document.getElementById(id).innerHTML = "Hello world!";
  4. }
  5.  
  6. function funkcja2(id)
  7. {
  8. document.getElementById(id).innerHTML = "...Jakaś zawartość.... <div id='aa1'></div><script type='text/javascript'>funkcja1('aa1')</script> .....tu dalej jakaś zawartość....";
  9. }


a w pliku html:
  1. <div id='aa2'></div><script type='text/javascript'>funkcja2('aa2')</script>


Problem polega na tym że funkcja funkcja1 nie wykonuje się wewnątrz funkcji funkcja2
Co innego gdyby była ona wywołana poprzez onclick - wtedy wszystko działa jak należy.

Gdzie może być błąd??
wszerad
Widać twórcy przeglądarek nie przewidzieli tak nietypowych zastosowań kodu... Niemniej twój kod jest dziwny bo na pewno da się go wywołać inaczej niż ty chcesz to zrobić, taki problem wywołać funkcje funkcja1 wewnątrz funkcji funkcja2 po dodaniu kodu poprzez innerHTML?
gargamel
To jest dziwne rozwiązanie. Problem jest taki, że muszę dodać pewną nową funkcjonalność w systemie. Zrobić to jak należy, to trzeba by przepisać na nowo dość sporą część kodu (co i tak z czasem trzeba będzie zrobić), ale puki co muszę zadowolić się rozwiązaniem na podobnej zasadzie jaką przedstawiłem - zleceniodawcy zależy na czasie...
wszerad
Da się na pewno coś zrobić tylko potrzebuje więcej szczegółów bo to co ty chcesz zrobić jest dziwne i niezrozumiałe.
gargamel
Dobra, rozwiązałem to inaczej. Jakby ktoś miał podobny problem, choć wątpię, to można to rozwiązać tak:

Zamiast wywoływania funkcji funkcja1 wewnątrz funkcji funkcja2 można zrobić to następująco:
  1. function funkcja2(id)
  2. {
  3. document.getElementById(id).innerHTML = "...Jakaś zawartość.... <div class='nazwaKlasy' id='id1' name='dane przekazywane do funkcji funkcja2'></div> .....tu dalej jakaś zawartość....";
  4. }


Zewnętrzny skrypt pobiera dane (id, name) z diva o określonej klasie, tworzy z nich odpowiednie parametry funkcji funkcja2 i na tymże divie ją uruchamia.

Rozwiązanie kosmiczne, ale może komuś pomoże ;]
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.