Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [html][js] div jako link
Forum PHP.pl > Forum > Po stronie przeglądarki > HTML \ XHTML
KCG
Chciałbym, aby div był linkiem. Ustawiłem sobie w css'ie cursor: pointer i myślałem, że onclick w divie załatwi sprawę, jednak nie.
Próbowałem tak: <div onclick="direct('adres.php');"> tresc </div> (direct() to na pewno dobra funkcja, bo w innych przypadkach działa).
Jak zrobić, aby cały div był linkiem?

pzdr
Moli
Pokaż kod funkcji direct.

ps. kod umieszczaj w bbcode.
KCG
  1. function direct(adres) {
  2. window.location = adres;
  3. }
webdice
Było niedawno, zobacz tu.
KCG
Dzięki za link winksmiley.jpg
Jednak mam div, w którym są jeszcze 3 divy. Dałem odpowiednie style i odnośnik za otwierającym znacznikiem głównego div, ale linkiem stał się tylko pierwszy 'poddiv'. Tak to wygląda, chodzi o ramkę z encyklopedią po lewej stronie: http://pytak.no-ip.org/~trudny/new_moto/
Chciałbym jeszcze, aby w divie tekst nie był zamieniany na linki, tzn. pozostał dla przykładu biały, można coś takiego robić, czy css dla każdego?

Doszedłem do wniosku, że w mojej funkcji zamiast window.location powinno być window.location.href, mam rację? Tylko czemu w niektórych przypadkach przekierowanie działało bez '.href'?
I chyba jednak zrobię na onclick, bo to najbardziej mi pasuje, dokładnie cały div jest linkiem, niewykluczając paddingów...
batman
A nie możesz zamienić głównego div-a na znacznik a?
Nadasz mu styl dusplay: block i po sprawie. Będzie cały klikalny wraz z zawartością.
KCG
Nie wiem czemu, ale jak tak zrobiłem to obramowanie zniknęło. Z tym, że wewnątrz zostawiłem divy, może tak być? Bo logicznie wtedy <a> zachowuje się, jak <div>.
batman
Jak zamienisz głównego diva na a, to musisz jeszcze skopiować wszystkie style, które były przypisane do tego diva.
.radex
Nie polecam... Takie rozwiązania (do tego JS) są strasznie niesemantyczne. Będziesz miał problemy z robotami googlów itd, bo one nie wiedzą co to jest JS. Po prostu dajesz display:block; i po sprawie winksmiley.jpg
KCG
Dawałem tą klasę, co dla div'a, w sumie mogę pomyśleć. Ale mam jeszcze pytanko, co do tego sposobu onclick: i tak w każdym divie jest normalny link, więc będzie to takie szkodliwe?
batman
Jeśli dasz onclick oraz zwykły link, to różne przeglądarki będą się różnie zachowywać. W jednej wykona się on click, w innej zadziała link. Poza tym używanie onclick w sytuacji, gdy w zupełności wystarczy link, spowoduje, że roboty indeksujące nie będą w stanie śledzić łączy na Twojej stronie.
KCG
Tak, ale cały div jest linkiem, dzieki onclick, a jeśli to nie zadziała to jest w środku zwykły link tekstowy. Logicznie rzecz ujmując, to roboty indeksujące pominą onclick i trafią na zwykły link, dobrze myślę?
batman
Dobrze myślisz, ale jest to dla Ciebie podwójna robota. Przecież napisałem wyżej, jak ze znacznika a zrobić element blokowy. Będzie działać na 100%. A jeśli nie chcesz się bawić z linkiem, to możesz otoczyć całego diva znacznikiem a. Uzyskany efekt będzie taki sam.
KCG
Nie do końca podwójna, bo mi właśnie bardziej odpowiada efekt, ale to już każdy ma własną skalę.
W każdym razie wielkie dzięki za wyczerpującą odpowiedź winksmiley.jpg
woj_tas
Cytat(batman @ 10.05.2008, 08:41:51 ) *
Jeśli dasz onclick oraz zwykły link, to różne przeglądarki będą się różnie zachowywać. W jednej wykona się on click, w innej zadziała link. Poza tym używanie onclick w sytuacji,

No nie za bardzo, bo dlaczego różne preglądarki miałyby różnie odczytywać? Robisz w onclicku return false i href sie nie wykona.
Cytat(batman @ 10.05.2008, 08:41:51 ) *
gdy w zupełności wystarczy link, spowoduje, że roboty indeksujące nie będą w stanie śledzić łączy na Twojej stronie.

Będą bo będzie link

Cytat(batman @ 10.05.2008, 10:31:11 ) *
Dobrze myślisz, ale jest to dla Ciebie podwójna robota. Przecież napisałem wyżej, jak ze znacznika a zrobić element blokowy. Będzie działać na 100%. A jeśli nie chcesz się bawić z linkiem, to możesz otoczyć całego diva znacznikiem a. Uzyskany efekt będzie taki sam.


Twoje rozwiązanie jest ok, ale nie do końca. A jest elementem liniowym i nie mozna do niego wrzucać div-ów.

@KCG zrów tak: głównego div-a zamien na "a" i nadaj mu display:block. Pozostałe div-y zamien na "span" i także nadaj im display:block;
"Span" jest elementem liniowym więc może być w "a"
batman
Cytat
No nie za bardzo, bo dlaczego różne preglądarki miałyby różnie odczytywać? Robisz w onclicku return false i href sie nie wykona.
Jeśli dasz return false w onclick dla div-a, to w żaden sposób to nie wpłynie na znacznik a. Return false zadziała tylko w przypadku, gdy onclick znajdzie się w a.

Cytat
Twoje rozwiązanie jest ok, ale nie do końca. A jest elementem liniowym i nie mozna do niego wrzucać div-ów.
Nigdzie nie jest napisane, że chodzi o doctype strict, więc nie ma potrzeby martwić się o to, że div znajduje się w a. Ale jeśli rzeczywiście ma się strona walidować dla strict, to masz rację.
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.