witam, chciałbym zrobić coś następującego: mam na stronie dajmy na to taki kod:
chyba kazdy wie jak to bedzie wyglądać. Czy ktoś może doradzić mi jak osiągnąć następujący efekt:
Doradzić zawsze, tylko ostrzegam, że czeka Cię mimo wszystko trochę nauki DOM.
Przede wszystkim musisz do jakiejś zmiennej przypisać wszystkie takie odnośniki, które chcesz znaleźć i zmodyfikować. Najwygodniej będzie najpierw złapać element je zawierający (np. dzięki getElementById), a następnie wyszukać je używając getElementsByTagName.
Potem trzeba przez wszystkie znalezione elementy przejechać for'em (jak po tablicy) zmieniając odpowiednie atrybuty za pomocą setAttribute.
Zaufany napisał(a):
Bez podania kodu całej strony dokładniejszych informacji nie dostaniesz. Poza tym zakładam, że chodzi ci o UserJavaScript.
_eP napisał(a):
Originally posted by Big_Z:
Bez podania kodu całej strony dokładniejszych informacji nie dostaniesz. Poza tym zakładam, że chodzi ci o UserJavaScript.
Bardziej od kodu calej strony wazniejsza jest informacja czy chodzi o pojedynczy element lub elementy rozrzucone na roznych poziomach hierarchii czy tez o wiele elementow na tym samym poziomie/galezi na ktorych wygodnie operowac w petli. W pierwszym przypadku zamiast filtrowac rozymi warunkami wiele rozych odnosnikow moze byc latwiej zlokalizowac ich polozenie w drzewie documentu ( o ile jest ono stale i nie posiadaja one swoich unikalnych id) i dobierac sie do nich indywidualnie.
Najtrudniej jest doradzac gdy nie wiadomo o co dokladnie chodzi pytajacemu, jaki jest jego zasob wiedzy i jakie checi do jego poglebienia. Najbardzie trywialna odpowiedz to po prostu zmiana wlasciwosci href elementu odnosnika A. Tylko ze tutaj wszyscy zakladamy ze pytajacemu rozchodzi sie o jakies rozwiazanie systemowe - sposob postepowania, a nie o jedna wlasciwosc jednego elementu. ketchup3 napisał(a):
generalnie sa to obiekty w jednej duzej ramce, a kazdy odnosnik znajduje sie w kolejnej osobnej ramce. Jak ktoś nie moze sobie tego wyobrazic to mniej wiecej wyglada to tak: <--jakieś teksty--> <table><tr><td> <table><tr><td>a href="pokaz.php?obr=1"><img src="thumb_brazek1.jpg"></a> </td> <td> itd.. </table></table> <--reszta dokmentu--> nie ma tam zadnego tagu id, mozna jedynie sciagac obiekty po klasach (podejrzewam ze jest to mozliwe?).
Poki co, moznaby zrobic takie cos: document.repace("/thumb_","/"); zadziała? PS. wystarczy zapisac to jako dowolny plik *.js i wyznaczyc w preferencjach witryny katalog z plikami *.js?
_eP napisał(a):
Originally posted by ketchup3:
... nie ma tam zadnego tagu id, mozna jedynie sciagac obiekty po klasach (podejrzewam ze jest to mozliwe?).
Poki co, moznaby zrobic takie cos: document.repace("/thumb_","/"); zadziała? PS. wystarczy zapisac to jako dowolny plik *.js i wyznaczyc w preferencjach witryny katalog z plikami *.js?
No to juz wiemy iz Koledze nie obce sa id tagi klasy itd.
document nie posiada ( o ile mi wiadomo ) metody replace().
Jako przyklad lokalizacji po tagach podam fragment kodu swojego user.js
switch(location.hostname) { case "www.eetimes.com": wn=document.body.getElementsByTagName("TABLE") wn2=wn[1].getElementsByTagName("TABLE") wn3=wn2[2].getElementsByTagName("TD") wn3t=wn2[2].getElementsByTagName("TABLE") wn3[2].style.backgroundColor="#c0F070";//='none'; wn3t[0].lastChild.lastChild.style.backgroundColor="#F0c070";//='none';
Powyzszy sposob wyszukiwania jest przydatny gdy chcemy dotrzec do konkretnej tabeli w konkretnym miejscu. Jezeli jednak odnosnikow jest wiele i sa rozrzucone po calym dokumencie oraz latwo bedzie je przefiltrowac (lub nawet zupelnie nie trzeba bedzie tego robic, bo zmiana bedzie dotyczyc wszystkich) to po prostu mozna zebrac je wszystkie razem w ten sposob: wn=document.body.getElementsByTagName("A"); a potem element po elemencie dokonywac poprawek ich wlasciwosci href w petli:
wn[ j ].href=...
ketchup3 napisał(a):
Jezeli jednak odnosnikow jest wiele i sa rozrzucone po calym dokumencie oraz latwo bedzie je przefiltrowac (lub nawet zupelnie nie trzeba bedzie tego robic, bo zmiana bedzie dotyczyc wszystkich) to po prostu mozna zebrac je wszystkie razem w ten sposob: wn=document.body.getElementsByTagName("A"); a potem element po elemencie dokonywac poprawek ich wlasciwosci href w petli:
wn[ j ].href=...
tak, to rozumiem i nawet do tego doszedlem, jednak natrafilem na problem jak znaleźć odpowiadający konkretnemu linkowi obrazek. I po drugie jak przekazac do odnosnika adres tego konkretnego obrazka. ps, nie lepiej bedzie to zrobic w css? Tak tylko pytam dla jasnosci, nie znam sie na tym
_eP napisał(a):
Originally posted by ketchup3:
tak, to rozumiem i nawet do tego doszedlem, jednak natrafilem na problem jak znaleźć odpowiadający konkretnemu linkowi obrazek. I po drugie jak przekazac do odnosnika adres tego konkretnego obrazka.ps, nie lepiej bedzie to zrobic w css? Tak tylko pytam dla jasnosci, nie znam sie na tym
To jak znalezc to juz calkiem zupelnie inny problem. W pytaniu ktore postawiles na wstepie bylo jasnym ze ten obrazek znalazles i tylko potrzebujesz odnalezc odpowiedni element odnosnika aby go o tym poinformowac (zmienic mu wlasciwosc href).
ketchup3 napisał(a):
nie chciało mi sie z tym meczyc zrobilem po prostu prosty programik w delphi ktory wykonuje mniej wiecej taka operacje jaka chcialem (tzn. mozna ogladac pelnowymiarowe obrazki). Musze tylko przejsc do zrodla strony, skopiowac wszystko do programu, nacisnac przycisk, wkleic spowrotem i zastosowac zmiany. Troche kombinowania ale dziala Dzieki wszystkim za pomoc. Temat mozna zamknac.
daroc napisał(a):
Trochę kombinowania naokoło. Chodziło Ci o coś takiego?
wn=document.body.getElementsByTagName("A");
for (i=0; i<wn.length; i++) {
obrazek=wn[i].getElementsByTagName("img");
};
Teraz masz i obiekt z linkiem i obrazek wewnątrz. Możesz sprawdzać źródło obrazka i zmieniać element, do którego odnosi się link. (Z pamięci pisałem, ale powinno działać.)