Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JS] dopisanie kilku rekordów do tabeli
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
kors4r
Szlag mnie trafi najjaśniejszy. Ślęczę nad tym od kilku godzin, czytam różne rzeczy w necie i za diabłe nie mogę dojść do rozwiązania :/

Moja znajomość JS jest niestety mizerna, angielskiego też - stąd te problemy.

A rzecz w tym, że:
Istnieje sobie strona www. Na stronie jest kilka tabelek, generowanych przez serwer rzecz jasna.

Chciałbym, żeby JS utworzył nową tabelkę pod jedną, konkretną istniejącą na stronie i tam wstawił określony text, albo (co byłoby jeszcze lepsze) żeby wstawiał kilka nowych wierszy do istniejącej tabeli.

Skrypt JS jest zainstalowany w GreaseMonkey, kod, który skrypt miałby wstawić jest pobierany z serwera www (innego, niż ten, który utrzymuje stronę). Skrypt działa jak należy - łączy się z drugim serwerem, pobiera tekst, tylko nie potrafię go zmusić do wstawienia tekstu w odpowiednie miejsce.

Kodu strony, na której skrypt działa nie mogę wkleić, bo pojawia się ostrzeżenie, że post za długi. Dlatego umieściłem kod pod tym adresem:
kod strony

Do kodu strony dodałem wiersz 627:
  1. <table><tr><td>TUTAJ MA BYĆ TABELA WSTAWIANA PRZEZ SKRYPT JS</td></tr></table>


Idealnie byłoby, gdyby JS umiał wstawiać nowe pełne wiersze do tabeli, która kończy się w linii 626

Funkcja, która prawidłowo pobiera tekst i miałaby wstawić tabelkę wygląda tak:
  1. function sendAjaxRequest(deleteOrderId) {
  2. if (deleteOrderId != 0) {
  3. dataString += "&deleteOrder=" +deleteOrderId;
  4. }
  5. GM_xmlhttpRequest({
  6. method: 'POST',
  7. url: 'http://adres_serwera_do_pobrania_listy_wierszy/share_orders/'+world+'&x='+x+'&y='+y+'&time='+datetimeStr,
  8. headers: {
  9. 'Content-type': 'application/x-www-form-urlencoded',
  10. 'User-agent': 'Mozilla/4.0 (compatible) Greasemonkey',
  11. 'Accept': 'application/atom+xml,application/xml,text/xml',
  12. },
  13. data: dataString,
  14. onload: function(responseDetails) {
  15. document.getElementById('questionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gif').innerHTML = responseDetails.responseText;
  16.  
  17. }
  18. });
  19. }


Mój problem leży w 15 wersie - nie wiem jak to zaprogramować, żeby 'responseText' pojawiał się w wybranym przeze mnie miejscu :/

Czy ktoś mógłby mi pomóc?

Próbowałem różnych "getElemets...", próbowałem ustalić ilość "table" i "tr", ale niestety nic mi z tego nie wychodzi.

Z góry dziękuję za wszelkie porady.
fleshgrinder
Cytat(kors4r @ 28.12.2012, 15:08:17 ) *
Kodu strony, na której skrypt działa nie mogę wkleić, bo pojawia się ostrzeżenie, że post za długi. Dlatego umieściłem kod pod tym adresem:
kod strony

Do kodu strony dodałem wiersz 627:
  1. <table><tr><td>TUTAJ MA BYĆ TABELA WSTAWIANA PRZEZ SKRYPT JS</td></tr></table>


oj, drzewo masz tam tak zbudowane, że ciężko się do tego elementu dostać.. najprostsza rada brzmi: dodaj do tego ostatecznego <td> jakieś id, wtedy bez problemu dostaniesz się do niego przez getElementById i po sprawie

w przeciwnym razie zostaje querySelector i człapanie wgłąb DOM, ale w tym przypadku to będzie gwałt na zdrowym rozsądku smile.gif
[JAVASCRIPT] pobierz, plaintext
  1. document.querySelector('#content_value > table > tbody > tr > td + td > table + div > table + table > tbody > tr > td').innerHTML = responseDetails.responseText;
[JAVASCRIPT] pobierz, plaintext
kors4r
Dzięki za odpowiedź.

Niestety nie mogę dodać ID do TD, bo nie mam dostępu do kodu tej strony, na której skrypt ma działać smile.gif nie mogę edytować kodu.

Zrobiłem coś innego: dałem getElementsByTagName('table') - policzyło mi 33 tabelki :/

Metodą prób i błędów (dając różne ID tabelek istniejących), wstawiłem w któreś tam miejsce nową tabelkę i jako tako działa. Dziadoskie rozwiązanie, bo jak zmienia się ilość tabelek to wszystko się rozjeżdża, ale na razie musi tak zostać. Może znajdzie się jakieś inne rozwiązanie.
zegarek84
na plemionach tak często nie zmieniają tabelek ;]
a po tym jak to masz zrobione chyba ma grać kilku userów na jednym koncie bez ponownego zalogowania ^^
te tabelki występują pojedynczo $(".vis"); nad tą tabelką która Cię interesuje jest ostatnia, czyli trzecia $(".vis")[2], do Swojej tabelki możesz dostać się bezpośrednio po $(".vis+table"), ale dla pewności możesz np. w stylu $("+table",$(".vis")[2]), jeśli coś się zmieni to nie znajdzie elementu... najbliższe id jakie jest tam Cię nie ratuje, ale może przyśpieszyć wyszukiwanie i jednak zawęża się przeszukiwanie do fragmentu strony więc zalecane by było $("+table",$("#content_value .vis")[2]), jesli miały by być jakieś elementy za tą wskazaną tabelką a przed szukaną to zamiast "+" mógłbyś skożystać z "~" i zawsze możesz odwołać się po indeksie do bezpośredniego elementu $("+table",$("#content_value .vis")[2]) ~= $("~table",$("#content_value .vis")[2]) a to co szukasz ale nie obudowane w jQ element DOM $("~table",$("#content_value .vis")[2])[0]

z nowych selektorów możesz kożystać gdyż wszystkie framworki js mają w silnik wkomponowane Sizzle, choć i to rozwiązanie zadziałało by na .querySelectorAll i .querySelector gdyż dedykujesz ten program pod mozille ;]

pozdro i udanej gry, już ponad 3 lata w to nie grałem ^^
kors4r
Aha tongue.gif

Z tego napisałeś zrozumiałem tylko słowa, które występują w potocznym polskim tongue.gif Reszta, to dla mnie magia smile.gif

Tabelki się zmieniają, bardzo często - zależy to od tego, czy masz jakiś raport z ataku na tę wioskę, czy nie. W sumie są dwie opcje (dwie możliwe ilości tabelek), więc to trochę ułatwia.

Nie ma to służyć do gry przez kilka osób na jednym koncie bez ponownego zalogowania, tylko pod listą rozkazów wysłanych na daną wieś z własnego konta, ma się pojawiać lista rozkazów wysłanych przez innych graczy na tę wieś (lista pobrana z zewnętrznego serwera). Nazywa się to "współdzieleniem informacji o rozkazach", stworzył to kiedyś "Szatdafakap", ale zarzucił ten koncept, a ja próbuję to reaktywować (nie udało mi się skontaktować z autorem).

Dzięki za pomoc, widać, że ogarniasz temat, ale ja chyba jeszcze za mało wiem o js, żeby umieć wykorzystać wiedzę, którą mi podałeś smile.gif

Pomęczę chyba znajomego, który kiedyś napisał mi kilka skryptów smile.gif

Dzięki jeszcze raz, temat do zamknięcia smile.gif
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.