Toon posts:

[HTML/JAVA] onclick plaatje

Pagina: 1
Acties:

Verwijderd

Topicstarter
De titel is misschien makkelijker dan dat het is maar ik wist niks beters,

ik heb een lijst met namen, daarvoor heb ik blauwe enveloppen met email adressen wanneer ik op zo'n envelop klik moet deze rood worden (deze persoon krijgt dan mail) en wanneer ik er nog een keer op klik moet deze weer netjes blauw worden (deze persoon krijgt toch geen mail)

Nu ben ik al een aardig eind alleen het werkt helaas nog niet, heeft iemand een betere of andere oplossing of weet je hoe dit afgemaakt kan worden dan hoor ik het graag, ik zit vast :D

het moet per se met javascript omdat het lokaal te gebruiken moet zijn.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<img border="0" 

onClick="if(this.src!='images/rc_enveloppe.gif') {this.src='images/rc_enveloppe.gif'} else {this.src='images/b_enveloppe.gif'};" 
onMouseOver="this.src='images/bo_enveloppe.gif'; this.style.cursor='hand'" 
onMouseOut="if(this.src!='images/rc_enveloppe.gif') {this.src='images/b_enveloppe.gif'} else {this.src='images/rc_enveloppe'}" 

src="images/b_enveloppe.gif" width="25" height="16"> 

op de een of andere manier vind hij this.src= hier leuk want wanneer ik op het plaatje klik word deze rood, maar wanneer 
ik er vervolgens weer af ga word deze gewoon weer blauw 

b_enveloppe.gif = Blauwe enveloppe 
bo_enveloppe.gif = Blauwe enveloppe Over 
rc_enveloppe.gif = Rode enveloppe   Click



-marcel

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 12:02

.oisyn

Moderator Devschuur®

Demotivational Speaker

java is geen javascript
P&W FAQ - HTML / javascript / css, etc...
(en kom op, het moet je toch wel opgevallen zijn dat dat soort vragen gewoon helemaal niet in PW voorkomen)

PW -> WG

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 20:27

crisp

Devver

Pixelated

kijk eens goed naar je logica. Wat is de src property van je image bij onmouseover? waarom gaat 'ie bij onmouseout dan altijd de else uitvoeren?
Je zult dus ergens de 'state' bij moeten houden, bijvoorbeeld in een custom property of in een global js variabele.

Intentionally left blank


Verwijderd

Topicstarter
goh, de vriendelijkheid straalt er weer vanaf vandaag...
het spijt me zeer dat ik dit verkeer gepost heb.

crisp, hij voert bij die onmouseout een else uit om de volgende reden:
wanneer hij al rood is, mag hij niet ineens blauw worden en andersom, wanneer hij blauwag hij niet ineens rood worden.

de kleur mag dus alleen veranderen na een onClick.

  • Johnny
  • Registratie: December 2001
  • Laatst online: 11:56

Johnny

ondergewaardeerde internetguru

Verwijderd schreef op 21 October 2003 @ 18:59:

crisp, hij voert bij die onmouseout een else uit om de volgende reden:
wanneer hij al rood is, mag hij niet ineens blauw worden en andersom, wanneer hij blauwag hij niet ineens rood worden.

de kleur mag dus alleen veranderen na een onClick.
Je spreekt jezelf tegen. Als de kleur alleen mag veranderen bij een onclick, wat heeft een onmouseout daar dan mee te maken? Want zodra de cursor van het plaatje af gaat vervolgens hij weer terug naar blauw. En dat wil je toch juist niet?

Bekijk het eens logisch:
event: onclick, -> kijk of het plaatje blauw is
> ja? maak het rood
> nee, maak het blauw

Dat is alles wat je nodig hebt, je hoeft het alleen maar om te zetten naar javascript. Geen onmouseout!

Aan de inhoud van de bovenstaande tekst kunnen geen rechten worden ontleend, tenzij dit expliciet in dit bericht is verwoord.


Verwijderd

Topicstarter
oke, maar dan zit ik automatisch ook met de onMouseOver, want wanneer je eroverheen gaat dan word die lichtblauw maar dat blijft dan standaard zo wanneer weer van het plaatje af gaat.

anywayz.. ik heb nu die twee eruit gehaald
code:
1
2
3
<img border="0" 
onClick="if(this.src!='images/rc_enveloppe.gif') {this.src='images/rc_enveloppe.gif'} else {this.src='images/b_enveloppe.gif'};" 
src="images/b_enveloppe.gif" width="25" height="16">


wanneer ik er nu op klik word hij netjes rood, en dat blijft ook zo wanneer ik er weer vanaf ga, maar als ik er dan voor een 2e keer op klik moet hij weer blauw worden, en dat werkt nog niet.

  • creative8500
  • Registratie: September 2001
  • Laatst online: 03-01 16:54

creative8500

freedom.

Zet eens een alert(this.src) in de else-statement. Waarschijnijk is het zo dat daarin namelijk niet het relatieve pad naar het plaatje staat, maar het absolute. Dan geeft this.src!='images/rc_enveloppe.gif' true terug, omdat 'http://www.domein.nl/images/rc_enveloppe.gif'!='images/rc_enveloppe.gif'. Dus dan wordt nogmaals de rode-envelop als plaatje ingesteld.

  • slm
  • Registratie: Januari 2003
  • Laatst online: 25-06 12:45

slm

wat creative zei, klopt. this.src geeft de filenaam + pad.

je dus zoiets als dit moeten gebruiken:
code:
1
onClick="this.src=(this.src.indexOf('on.jpg')<0?'on.jpg':'off.jpg')"


vervang de on.jpg en off.jpg door de namen van je eigen pics

To study and not think is a waste. To think and not study is dangerous.


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 20:27

crisp

Devver

Pixelated

dit idee is ook wel aardig:

JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
var images = [];
images['on'] = new Image(); images['on'].src = 'images/on.gif';
images['off'] = new Image(); images['off'].src = 'images/off.gif';
images['over'] = new Image(); images['over'].src = 'images/over.gif';

var states = [];

function imageClick(img) {

  if (typeof states[img.id] == 'undefined') states[img.id] = 1;
  else states[img.id] = 1 - states[img.id];

  img.src = states[img.id] ? images['on'].src : images['off'].src;

}

function imageOver(img) {

  img.src = images['over'].src;

}

function imageOut(img) {

  if (typeof states[img.id] == 'undefined') states[img.id] = 0;

  img.src = states[img.id] ? images['on'].src : images['off'].src;

}


HTML:
1
2
3
4
<img id="img1" src="images/off.gif"
  onclick="imageClick(this)"
  onmouseover="imageOver(this)"
  onmouseout="imageOut(this)" alt="" />

Intentionally left blank


Verwijderd

Topicstarter
dit is het idd

bedankt


*edit
dit javascript is idd ook wel geinig, iets omslachtiger maar wel met mouseOver,
er zit overgens een klein foutje in

img vergeten.
function imageOut(img) { }

bedankt iig

[ Voor 80% gewijzigd door Verwijderd op 21-10-2003 22:51 ]


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 20:27

crisp

Devver

Pixelated

Verwijderd schreef op 21 oktober 2003 @ 22:45:
dit is het idd

bedankt


*edit
dit javascript is idd ook wel geinig, iets omslachtiger maar wel met mouseOver,
er zit overgens een klein foutje in

img vergeten.
function imageOut(img) { }

bedankt iig
Ik heb dit dan ook uit m'n hoofd even getikt - iets wat je dus leert door veel zelf te doen en uit te proberen. Sowieso je code herbruikbaar maken (en dus gebruik maken van functies) is vele malen handiger en overzichtelijker. Javascript is inderdaad geinig, maar ook nog eens een hele krachtige taal :)

Intentionally left blank

Pagina: 1