Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: zmiana src
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
Michuu94
Witam, mam na stronie zewnętrzny JavaScript (z zupełnie innej strony, dopuszczony do publicznego użytku), który wyświetla mi pewien tekst w bloku.
Skrypt ten codziennie wyświetla automatycznie co innego.
Wyświetlaną zawartością można zarządzać jednak przez zmianę jednego znaku w adresie skryptu, tj. domyślne "0" wyświetla to, co jest na dziś, jeżeli wpiszę "-1", będzie ze wczoraj, a np. "5" - to, co za pięć dni.

Wszystko działa bezbłędnie, nie muszę nic robić, żeby ten blok mi się aktualizował.

Mój problem polega na tym, że chciałbym zrobić odnośniki "poprzedni dzień" i "następny dzień", można by dodawać i odejmować tą liczbę deklarując ją jako zmienną. Ale jak technicznie zrobić, żeby zmieniał się atrybut "src" wewnątrz linku do zewnętrznego JavaScriptu? Myślałem, że zrobi się to tak, jak zmianę obrazka, a okazało się, że nie działa. Chodzi mi o naciśnięcie przycisku, dzięki któremu wyświetli się zupełnie inny tekst, tzn. zmieni się wyświetlany JavaScript.

Czy ktoś ma jakiś pomysł?
Jestem trochę zielony w kwestii JavaSrcript i PHP, z góry dziękuję za wszelką pomoc smile.gif
kamil4u
Spróbuj dodać skrypt poprzez DOM, czyli nie zmieniasz "src", tylko dodajesz cały element <script> do <head> - poczytaj o DOM, to dowiesz się, jak w prostu sposób to się robi(createElement, appendChild itd.)
Michuu94
Dziękuję smile.gif
czytam, kombinuje, ale nie wychodzi. Najpierw chcę usunąć element przez removeChild, i nic nie działa.
ale nie rozumiem dlaczego piszesz, żeby Script dodać do <head> i o który Script chodzi - ten zmieniający, czy wyświetlający?
AdIoS_Neo
Witaj,
niestety zmiana atrybutu src nic nie da ponieważ ten blok jest raz odczytywany podczas ładowania strony i nawet jeśli zmienisz wartość atrybutu src (bo się da smile.gif) to nowy plik nie zostanie pobrany i dołączony do aktualnej zawartości strony. Do osiągnięcia pożądanego przez Ciebie efektu wydaje mi się najlepiej wykorzystać AJAX ew. pływająca ramkę (tylko w niej nie masz kontroli nad stylem).
Michuu94
ramka mnie nie interesuje, bo nie pasuje do wyglądu.
Czytam o DOM, opanowałem appendChild, problemem jest jedynie to, że gdy przez appendChild dodaję skrypt (któremu wcześniej ustawiłem atrybuty) to zawartość - tekst, który jest wyświetlany przez skrypt pojawia się w całym oknie, bez stylów na białym tle, a na dodatek staje się jedynym obiektem wewnątrz <body>, adres strony się nie zmienia. Chcę osiągnąć, żeby jako dziecko dodał się do jednego <div> w odpowiednim miejscu strony.

[JAVASCRIPT] pobierz, plaintext
  1. <script>// <![CDATA[
  2. function znikaj() {
  3. var blok = document.getElementById('wnetrze');
  4. var rodzic = blok.parentNode;
  5. rodzic.removeChild(blok);
  6. }
  7. function pojaw() {
  8. var stworz = document.createElement('div');
  9. stworz.setAttribute("id","wnetrze");
  10. document.getElementById('calosc').appendChild(stworz);
  11. var blok = document.getElementById('wnetrze');
  12. var adres = 'adres skryptu z src';
  13. var skrypt = document.createElement("script");
  14. skrypt.setAttribute("src",adres);
  15. skrypt.setAttribute("type","text/javascript");
  16. skrypt.setAttribute("id","lit");
  17. blok.appendChild(skrypt);
  18. }
  19. // ]]></script>
[JAVASCRIPT] pobierz, plaintext

i wywołanie:
  1. <p onClick="znikaj()">ZNIKAJ</p>
  2. <p onClick="pojaw()">POJAW SIĘ</p>
  3. <div id="calosc">
  4. <div id="wnetrze">
  5. <script type="text/javascript" id="lit" src="http://www.niedziela.pl/out/liturgia_out.js.php?data=0"></script>
  6. </div>
  7. </div>


puki co mam to bez przechodzenia do następnego dnia, o czym pisałem w pierwszym poście, żeby się nauczyć samej metody appendChild. Ostatecznie połączę obie funkcje w jedną.
Czy ktoś wie w czym popełniłem błąd i jak zaradzić temu, żeby tekst nie był wyświetlany w całym oknie, a stał się dzieckiem?
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.