Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Javascript, HTML & linkin teko

Sivun loppuun

makkke_ [03.04.2012 09:27:02]

#

Eli kyseessä on jQueryllä toteutettu kuvakruselli jossa on kiinteät paikat jokaiselle kuvalle ja aina joku kuvao n aivan etummaisena kaikista ja se pitäisi nyt saada auki linkillä joka on muuala kuin siinä itse kuvassa.

Alla oleva koodi tulostaa aina etummaisen kuvan linkin sivulle reaaliajassa.

<p id="title-text"></p>

Ja jos tuon saisi jotenkin vielä linkkiin niin olisin almost finaalissa, mutta en ole itse ainakaan onnistunut luomaan tuosta linkkiä.
Haen siis tämän tyylistä:

<a href="<p id="title-text"></p>">Linkki</a>

Mutta eihän tuo tietenkään voi edes toimia noin ja tuolle ratkaisu mikäli joku taitava tietää niin kirjoitteleppa! :)

jukkah [03.04.2012 09:53:25]

#

Tekisin sen jotakuinkin näin:

<p id="..." href="osoite"></p>

Ja sitten siihen linkkiin laitetaan hrefiksi aina etummaisen p:n hrefin arvo.

<a href="osoite">Linkki</a>

Koodini ei (oletettavasti) mene läpi validaattorista, mutta kun p:n href-attribuutin sisällön on tarkoitus olla vain "muistissa", ei se mielestäni haittaa. :)

makkke_ [03.04.2012 10:12:30]

#

Joo ei tämä julkisesti nettiin päädykkään niin ei tarvi olla ihan jetsulleen kaikki, kuhan saan tällä yhdellä selaimella toimimaan ni on jees.
Tuo sun vinkkis antaa vaan osoitteen joka ohjaa /osoite sivulle joten ei toimi :/
Tää on vähän kiperä tehtävä saada toimimaan kun kokelti on jo yhdistää php ja html koodi mutta ei auta ainakaa tähän mennessä kokeilluilla koodin pätkillä. Höh mutta kiitos ainakin yrityksestä auttaa.

jukkah [03.04.2012 10:32:58]

#

Osoite pitää aina päivittää erikseen, kun vekotin pyörähtää.

Eli, kun edessä on auton kuva, karusellin alla olevasta linkistä pääsee auto.php-sivulle, ja kun edessä on tietokoneen kuva, samasta linkistä pääsee tietokone.php-sivulle, jne.?

Edit. Vai haluatko laajentaa kuvan isommaksi linkkiä napsauttamalla?

makkke_ [03.04.2012 10:36:25]

#

Joo kyllä juuri näin :) ja <p id="title-text"></p> tämä koodin pätkä näyttää sen osoitteen aina kun pyöräyttää karusellia juuri oikeana eli puoliks tehty homma. :)

Lisäys: Teen sulle demon tosta tonne nettiin ni näät millanen se on ni linkkaan kun on valmis.

Lisäys: Eli tästä näet miten se toimii tällä hetkellä, karuselli pyörii joko klikkaamalla oikeaa ja vasenta nuolta tai numpadin oikea ja vasen näppäin. Huomaa kun linkki teksti vaihtuu ylhäällä aina kun pyöräyttää.

jukkah [03.04.2012 15:09:11]

#

Ahaa, nyt tajusin. Eli haluat p#title-text:in sisältämän tekstin linkin hreffiin.

Itse asiassa, linkin hrefiä tarvitaan vain, kun linkkiä napsautetaan, eli se voidaan hakea vasta silloin tuosta p#title-textistä. Halutessasi voit muokata tuon toiminaan jo hiiren päälleviennillä.

$(document).on("click", "#linkki", function () {
    $(this).attr("href", $("#title-text").text());
});

makkke_ [03.04.2012 16:00:12]

#

Elikkäs mihin tungen tuon #linkki idn?

jukkah [03.04.2012 19:52:31]

#

makkke_ kirjoitti:

Elikkäs mihin tungen tuon #linkki idn?

Se on sen linkin (input vaatii säätämistä) id, jonka hrefistä tehdään automaattisesti päivittyvä. (Todennäköisesti sen keskimmäsen nuolen, josta ei tapahdu mitään.) Eli näin:

<div id="ylos">
    <!-- CSS: #linkki ja #linkki:hover hoitavat kuvan vaihtumisen kätevästi. -->
    <a id="linkki"></a>
</div>

Niin, ja tuolla <p href="..."></p>-jutulla et tee yhtään mitään ja jQuerystä on olemassa uudempikin versio kuin 1.4 (on-funktio löytyy vasta 1.7:sta). :)

Uusimman jQueryn saa kätevästi näin:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>

Metabolix [03.04.2012 19:57:10]

#

Selvästikin sivulle pitää lisätä myös tuo alussa mainittu p-tagi, koska juuri sen sisällöstä tässä yritetään hakea osoitetta. Lisäksi jukkah:n antama JS-koodi on nyt aivan väärässä paikassa.

Kannattaa myös korjata HTML-koodissa olevat virheet.

jukkah [03.04.2012 20:01:47]

#

Metabolix kirjoitti:

Selvästikin sivulle pitää lisätä myös tuo alussa mainittu p-tagi, koska juuri sen sisällöstä tässä yritetään hakea osoitetta. Lisäksi jukkah:n antama JS-koodi on nyt aivan väärässä paikassa.

JavaScript-koodi meni vahingossa p:n päälle? Se oli siinä nimittäin vielä kolmelta.

neau33 [03.04.2012 20:06:07]

#

Moi makkke_!

<a href="javascript:location.href=$('#title-text').text();">linkki</a>

tsuriga [03.04.2012 20:44:51]

#

neau33 kirjoitti:

<a href="javascript:siirry();">linkki</a>

Eipä laiteta niitä funkkareita merkkaukseen, vaan käytetään tapahtumien sidontaa

jukkah kirjoitti:

$(document).on...

... muttei sidota mielelllään roottinodeen. Mitä kauemmas tapahtuman alkulähteestä sidotaan, sitä kauemmin joudutaan DOM-puussa hyppimään.

Sidotaan suoraan oikeaan elementtiin

$('#linkki').on('click', function(e) {
    e.preventDefault();
    location.href = $('#title-text').text();
});

Anonyymin funktion sisältöä on hankala sanoa varmuudella, kun et ole kertonut tarkemmin, mikä jQUery-karuselli siellä on taustalla ja miten se ne kuvat lataa näytille.

jukkah [03.04.2012 21:03:36]

#

tsuriga kirjoitti:

Mitä kauemmas tapahtuman alkulähteestä sidotaan, sitä kauemmin joudutaan DOM-puussa hyppimään.

Mitenkähän en ole tuota tajunnut aiemmin. :D

tsuriga kirjoitti:

...mikä jQuery-karuselli siellä on taustalla ja miten se ne kuvat lataa näytille.

Ylempänä oli pieni huomaamaton linkki demoon, ja CloudCarousel siellä pyörii taustalla. Veikkaan, että siitä nuolilinkistä pitäisi tapahtua sama asia, kuin itse kuvaa napsauttamalla (tällä hetkellä), eli location.href toimii ihan hyvin.

makkke_ [04.04.2012 00:32:25]

#

Hienosti tullut vastauksia, kiitos siitä :) Ongelma on yhä olemassa, eli ratkaisua ei ole löytynyt, tällä hetkellä sivulla on "käytössä" jukkah:n ehdotus muttei näytä toimivan, ei edes css tyylistä suostu hakea tuota ala "ylös nuoli" kuvaa :/

neau33 [04.04.2012 02:31:43]

#

Moi taas makkke_!

iske jutskat tähän tyyliin...

<div id="ylos">
	<input id="up-but" onmouseover="this.src='images/ylospush.png'"
	onmouseout="this.src='images/ylos.png'" type="image" src="images/ylos.png"
	onclick="location.href=$('#title-text').text();">
</div>

<div id="piilo" style="position: absolute; left: -100%">
	<p id="title-text"></p>
</div>

ja poista nämä tyylitiedostostasi...

#linkki {
	WIDTH: 300px; BACKGROUND: url(http://makke.t15.org/info/images/ylos.png); HEIGHT: 300px
}
#linkki:hover {
	BACKGROUND-IMAGE: url(http://makke.t15.org/info/images/ylospush.png)
}

niin alkaa rokkaamaan!

makkke_ [04.04.2012 03:01:03]

#

Wautsi se toimii, mahtavaa! pitäisi vielä laittaa tuo ylösnuolen toiminta toimimaan numpad näppäimellä 5 :) mutta mikäli aikaa riittää ja halua niin voit myös kertoa miten se tehdään samaan syssyyn :) näppäimen keycodehan on 101 :)

Kokeilin soveltaa viimeksi antamaasi koodia seuraavasti:

if(code==101){
    $("#up-but").mouseup();
}

mutta yllätys ei toimi kun en osaa javascriptiä oikeastaan.

neau33 [04.04.2012 03:32:03]

#

Moi taas makkke_!

iske se tyylisivusi näyttämään tältä ja poista html koodin 'piilo' divistä se style asetus

body {
	BACKGROUND-COLOR: #ffffff; font-color: #ffffff
}

p {
	WIDTH: 50%; FONT-FAMILY: arial, verdana, sans-serif; COLOR: #000000; MARGIN-LEFT: auto; FONT-SIZE: 20px; MARGIN-RIGHT: auto
}
#vasen {
	position: absolute; left: 20%
}
#ylos {
	position: absolute; left: 40%
}
#alas {
	position: absolute; left:40%
}
#oikea {
	position: absolute; left: 60%
}

#piilo{
	position: absolute; left: -100%
}

ja iske ne linkkien takana olevat sivut tyyliin...

<html>
<head>
<link rel="stylesheet" href="../../tyyli.css" type="text/css" />
<script language="javascript">
document.onkeyup = function(e){
	var code;
	if(window.event){
		code = event.keyCode;
	}else
	{
		code = e.which;
	}
	if(code==98){
		location.href="../../";
	}
}
</script>
</head>
<body>
	<center>
		<h1>AUTOT</h1>
	</center>
	<p>
	Autot
	<br>
	<img src="../../images/1.png">
	</p>
	<div id="alas">
		<input onmouseover="this.src='../../images/alaspush.png'"
		onmouseout="this.src='../../images/alas.png'" type="image"
		src="../../images/alas.png"
		onclick="javascript:location.href=../../'">
	</div>
</body>
</html>

makkke_ [04.04.2012 03:42:53]

#

Nääh ne voi olla tollasenaan kun tää ei tuu kumminkaan nettiin tää lopullinen juttu, tuo on vaa tollane versio joka havainnollisti millanen tää karuselli on :) se voi olla tollasenaan mut se numpad 5 näppäimestä toimiva ylöspäin osottava nuoli olis tarpeen kyllä :)

neau33 [04.04.2012 03:49:20]

#

Moi taas!

Moi taas makkke_!

keyup funkkari näyttäs tältä:

$(document).keyup(function(e) {
     var code = e.keyCode?e.keyCode:e.which;
     if(code==102){
         $("#left-but").mouseup();
     }
     if(code==100){
         $("#right-but").mouseup();
     }
     if(code==101){
         location.href=$('#title-text').text();
     }
});

makkke_ [04.04.2012 03:52:57]

#

Entäpä jos haluaa keycode 98:lla eli numpad 2 poistua sivulta jolle meni? sitten toi karuselli pyöris kokonaan näppäimistöllä eikä tarvitse hiireen koskea. :))

neau33 [04.04.2012 04:13:36]

#

Moi!

tsekaa toi mun toiseksiviimeisin viesti uudelleen...

täältä voit impata palvelimella toimivan version

Ja mikäli sinua vielä kiinnostaa se juttu, jota taannoin vinguit sähköpostitse elikä klikkaaminen tietyllä kohtaa selainikkunassa niin voit impata täältä paketin, jolla jutska onnistuu IE:ssä

jukkah [04.04.2012 08:47:29]

#

neau33: Silmään pistää heti HTML-koodin sekaan attribuutteina tungetut tyylit ja koodit. :) Pieni muokkaus niihin, kiitos.

makkke_ [04.04.2012 08:51:45]

#

Viel ois niinkin pieni juttu tekemättä eli

if(code==98){
	location.href="http://makke.t15.org/info/";
}

Tämä koodi toimimaan niin ettei se mene tohon tiettyyn sivuun vaan

window.close()

sulkisi sivun

neau33 [04.04.2012 09:00:28]

#

jukkah kirjoitti:

neau33: Silmään pistää heti HTML-koodin sekaan attribuutteina tungetut tyylit ja koodit. :) Pieni muokkaus niihin, kiitos.

mutta ei...tällä jollain neropatilla ei pistänyt ollenkaan silmään tämä...

neau33 kirjoitti:

Moi taas makkke_!

iske se tyylisivusi näyttämään tältä ja poista html koodin 'piilo' divistä se style asetus...
 

makkke_@ mitäs maksaisit viritemästä, joka sulkis koko koneen siitä linkistä?

jukkah [04.04.2012 09:02:13]

#

Näin suljetaan nykyinen ikkuna. http://groups.google.com/a/googleproductforums.com/forum/#!topic/chrome/GjsCrvPYGlA

if (code == 98) {
    window.open('', '_self', '');
    window.close();
}

makkke_ [04.04.2012 09:12:50]

#

Tarkoituksenani on siis avata karusellin linkit uudessa sivussa ja sitten kun halutaan taas takaisin karuselliin niin poistutaan sulkemalla koko sivu ja näin ollen karusellissa on aina etummaisena se sivu mihin viimeksi jäätiinkään jos ihmettelitte tarkoitustani.

jukkah [04.04.2012 09:57:54]

#

neau33 kirjoitti:

jukkah kirjoitti:

neau33: Silmään pistää heti HTML-koodin sekaan attribuutteina tungetut tyylit ja koodit. :) Pieni muokkaus niihin, kiitos.

mutta ei...tällä jollain neropatilla ei pistänyt ollenkaan silmään tämä...

neau33 kirjoitti:

Moi taas makkke_!

iske se tyylisivusi näyttämään tältä ja poista html koodin 'piilo' divistä se style asetus...

Tarkoitin sitä "imppaa tätä koodia"-linkin takaa löytyvää koodiasi, joka on enimmäkseen kopio makkke_n toimimattomasta koodista => makkke_ diffaa sen ja tekee pari muutosta, eikä opi mitään. :( Jos olisit kirjoittanut sen koodin uudelleen, siinä olisi ollut tutkittavaa useammaksi minuutiksi.

makkke_ kirjoitti:

...jos ihmettelitte tarkoitustani.

Tein koodiini pienen lisäyksen selvyyden vuoksi, eli tuo yläpuolella oleva avaa-ja-sulje-ikkuna-koodi tulee niille alasivuille, kun halutaan päästä takaisin. (Eli se sulkee nykyisen ikkunan/tabin jolloin jäljelle jää aloitussivu.)

JavaScriptillä on vähän hankala sulkea nykyistä ikkunaa, kuten huomaat. Tarvitaan vähän selaimenharhautuskoodia. :)

makkke_ [04.04.2012 10:08:11]

#

Joo, noh tuo toimii tällä hetkellä ihan ok. Ainoa mikä ei toimi on karusellin linkkien avaaminen uuteen ikkunaan. Mitenköhän tämän

if(code==101){
    location.href=$('#title-text').text();
}

avaisi kokonaan uuteen ikkunaan? Kokeilin esimerkiksi tälläistä

if(code==101){
    window.open=$('#title-text').text();
}

mutta ei toiminut :(

jukkah [04.04.2012 10:42:44]

#

Kokeilepa näin:

if (code == 101) {
    window.open($('#title-text').text());
}

Eli window.open on funktio, jota kutsumalla avautuu uusi ikkuna.

makkke_ [04.04.2012 11:08:52]

#

Ai se olikin noin :) NYT mulla on VIHDOIN kaikki mitä tarvitsin, joten kiitän ja kumarran kaikille jotka auttoi mua tässä, iso kiitos :)

neau33 [04.04.2012 15:48:01]

#

Moi!

jukkah kirjoitti:

...joka on enimmäkseen kopio makkke_n toimimattomasta koodista...

no epäilempä, ettei tämä makkke_ olisi saanut aikaan juurikaan mitään tähän aiheeseen liittyvää ilman oheista demoa...

jukkah [04.04.2012 16:03:00]

#

neau33 kirjoitti:

no epäilempä, ettei tämä makkke_ olisi saanut aikaan jurikaan mitään tähän aiheeseen liittyvää ilman oheista demoa...

Aha, olitte jo tuttuja valmiiksi. Hyvin toimittu neau33! :)

neau33 [04.04.2012 21:32:15]

#

Heippa taas!

Aiheeseen liittyvä päivitetty demo, joka toimii tässä ketjussa mainittujen näppäinten osalta myös Opera -selaimessa löytyy täältä


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta