webForum webForum sponsras med lina och serverplats av Binero AB

Gå tillbaka   webForum > Utveckling > Webbutveckling > Javascript

Javascript Här diskuteras det som rör Javascript, AJAX, DOM & DHTML.

Svar
 
Trådverktyg Visningsalternativ
Äldre 2005-03-29, 17:11   #1
bloSSA
Medlem
 
Registrerad: 2000-09-16
Ort: Böketofta
Inlägg: 112
Lösningar: 1
'a href' -->'form'

Jag skulle vilja göra om en 'a href'-länk till ett javascript till att när man väljer en 'option' i ett formulär så ska formulärsdatan skickas till javascriptet.

Javascriptet:
Kod:
<script language="javascript" type="text/javascript">
var lastID = \'\';
var lastGender = \'\';
var lastZ = \'\';
function memClick (id, gender, z)
{
	if (lastID)
	{
		lastID.src = \'katalog/maps/\' + lastGender + \'pin.gif\';
		lastID.style.zIndex = lastZ;
	}

	id.src = \'katalog/maps/\' + gender + \'pin_on.gif\';
	id.style.zIndex = 9999; // make sure the z-index is high enough to see

	// update to turn image to off next time
	lastID = id;
	lastGender = gender;
	lastZ = z;
}
</script>
Här är koden på hemsidan idag:
Kod:
<a href="java script:memClick(document.images.p1,0">jocke</a>
<a href="java script:memClick(document.images.p2,0">anna</a>
<a href="java script:memClick(document.images.p3,0">pelle</a>
<a href="java script:memClick(document.images.p3,0,1">per</a>
Och här är det jag försökt att få att fungera:
Kod:
<form method="post" name="images">
	<select name="p" style="font-size: 7pt;" size="30" 
onchange="submit.memClick(document.images.p.options[this.selectedIndex].value);">
<option value="1, 0">jocke</option>
<option value="2, 0">anna</option>
<option value="3, 0">pelle</option>
<option value="3, 0, 1">per</option>
</select></form>
Jag tycker att jag har testat de flesta varianter jag hittat på nätet, men ingen har varit i närheten av att fungera så jag antar att jag missat något fundamentalt(?). Kan tillägga att jag e totalt nollad vad gäller javascript...

Tacksam för tips!
/Anders
__________________
www.loppmarknader.se

Senast redigerad av bloSSA, 2005-03-29 klockan 19:38
bloSSA besöker inte forumet just nu   Svara med citat
Äldre 2005-03-29, 19:13   #2
@nders
Moderator
Marsvin
 
@nderss avatar
 
Registrerad: 2000-06-30
Ort: Nyköping
Inlägg: 26 815
Lösningar: 3126
Kan du inte visa koden som skickas till webbläsaren istället för koden där javascript och formulär genereras? Vi har ju ingen aning om innehållet i dina hemska php-variabler och läskiga objekt...
__________________
@aviddevguy
@nders besöker inte forumet just nu   Svara med citat
Äldre 2005-03-29, 19:30   #3
bloSSA
Medlem
 
Registrerad: 2000-09-16
Ort: Böketofta
Inlägg: 112
Lösningar: 1
:r
Jag har städat mitt första inlägg nu. *sorry*

/Anders
__________________
www.loppmarknader.se
bloSSA besöker inte forumet just nu   Svara med citat
Äldre 2005-03-29, 19:33   #4
@nders
Moderator
Marsvin
 
@nderss avatar
 
Registrerad: 2000-06-30
Ort: Nyköping
Inlägg: 26 815
Lösningar: 3126
Du har kvar lite $settings['default_images_url'] i första delen fortfarande. (och spontant känns just de raderna felaktiga. Vad är det tänkt att du ska göra där?)
__________________
@aviddevguy
@nders besöker inte forumet just nu   Svara med citat
Äldre 2005-03-29, 19:41   #5
bloSSA
Medlem
 
Registrerad: 2000-09-16
Ort: Böketofta
Inlägg: 112
Lösningar: 1
Har ändrat i javascriptet i mitt första inlägg, jag hoppas att jag har rätt på alla fnurpar å duttar. :-)
Javascriptet i sej funkar annars, det har jag inte rört.

Det som ska ske är att en gif-bild ska bytas mot en annan när man valt ett namn. Det finns många namn och det finns många små gif-bilder. Varje gif-bild representerar ett namn. När man valt ett namn ska föregående valt namns gif återställas.
__________________
www.loppmarknader.se
bloSSA besöker inte forumet just nu   Svara med citat
Äldre 2005-03-29, 19:49   #6
@nders
Moderator
Marsvin
 
@nderss avatar
 
Registrerad: 2000-06-30
Ort: Nyköping
Inlägg: 26 815
Lösningar: 3126
leende

Eftersom det är lite olika parametrar som ska skickas med hade jag antagligen gjort något sånt här:
Kod:
<form method="post" name="images">
	<select name="p" style="font-size: 7pt;" size="30" onchange="doMemClick(this.value);">
<option value="jocke">jocke</option>
<option value="anna">anna</option>
<option value="pelle">pelle</option>
<option value="per">per</option>
</select></form>
Och så klart javascriptfunktionen som ropar på memClick():
Kod:
function doMemClick(user) {
     if (user=="jocke")
          memClick(document.images.p1,0);
     if (user=="anna")
          memClick(document.images.p2,0);
     if (user=="pelle")
          memClick(document.images.p3,0);
     if (user=="per")
          memClick(document.images.p3,0,1);
}
Det går nog att göra på något finare sätt, men håll till godo tills något av proffsen dyker upp med något läckert!

Mvh
__________________
@aviddevguy
@nders besöker inte forumet just nu   Svara med citat
Äldre 2005-03-29, 20:00   #7
bloSSA
Medlem
 
Registrerad: 2000-09-16
Ort: Böketofta
Inlägg: 112
Lösningar: 1
Ok, ska testa det. Jäkligt smart å skapa en funktion tycker jag!!

Då jag kör med loopar så kommer jag dock att ändra value, men det är en baggis.

Tackar, tackar!
__________________
www.loppmarknader.se
bloSSA besöker inte forumet just nu   Svara med citat
Äldre 2005-03-29, 20:50   #8
Erik Juhlin
Medlem
 
Erik Juhlins avatar
 
Registrerad: 2000-05-27
Ort: Helsingborg
Inlägg: 7 625
Lösningar: 623
Skulle bara vilja påpeka att this.value inte är så vettigt att använda. Den propertyn finns egentligen inte. Det är bara ett Internet Explorer påhitt. Kör med: this.options[this.selectedIndex].value istället.
Erik Juhlin besöker inte forumet just nu   Svara med citat
Äldre 2005-03-29, 20:55   #9
Erik Juhlin
Medlem
 
Erik Juhlins avatar
 
Registrerad: 2000-05-27
Ort: Helsingborg
Inlägg: 7 625
Lösningar: 623
Så här hade dock jag skrivit. If-satser känns inte hållbart i längden.
Kod:
<script language="javascript" type="text/javascript">
var lastID = '';
var lastGender = '';
var lastZ = '';
function memClick(id, gender, z)
{
	if (lastID)
	{
		lastID.src = 'katalog/maps/' + lastGender + 'pin.gif';
		lastID.style.zIndex = lastZ;
	}

	id.src = 'katalog/maps/' + gender + 'pin_on.gif';
	id.style.zIndex = 9999; // make sure the z-index is high enough to see

	// update to turn image to off next time
	lastID = id;
	lastGender = gender;
	lastZ = z;
}

function doMemClick(val)
{
	var valArr = val.split();
	var img = document.images["p" + valArr[0]];
	
	memClick(img, valArr[1], valArr[2]);
}
</script>

<form method="post" name="images">
<select name="p" style="font-size: 7pt;" size="30" 
onchange="doMemClick(this.options[this.selectedIndex].value);">
<option value="1,0">jocke</option>
<option value="2,0">anna</option>
<option value="3,0">pelle</option>
<option value="3,0,1">per</option>
</select>
</form>
Erik Juhlin besöker inte forumet just nu   Svara med citat
Äldre 2005-03-29, 21:35   #10
bloSSA
Medlem
 
Registrerad: 2000-09-16
Ort: Böketofta
Inlägg: 112
Lösningar: 1
Det där sista ser smidigt ut, så vill jag ha det. :-)

Det funkar dock inte. Jag testade även att ändra splitten till
Kod:
val.split(",")
Jag har testat med Opera och Mozilla. I Opera är det första felmeddelandet jag får:
Kod:
Event thread: onchange
Error:
name: ReferenceError
message: Statement on line 1: Reference to undefined variable: No such variable 'doMemClick'
Backtrace:
  In unknown script
    doMemClick(this.value);
  At unknown location
    {event handler trampoline}
Och detta betyder...? ;-)
__________________
www.loppmarknader.se
bloSSA besöker inte forumet just nu   Svara med citat
Äldre 2005-03-29, 21:57   #11
bloSSA
Medlem
 
Registrerad: 2000-09-16
Ort: Böketofta
Inlägg: 112
Lösningar: 1
Upps! fel log. Har aldrig använt javaloggen tidigare... :-)

Det verkar nästan funka. det som blir fel är:
Kod:
Event thread: onchange
Error:
name: TypeError
message: Statement on line 13: Expression evaluated to null or undefined and is not convertible to Object: id
Backtrace:
  Line 13 of inline#3 script in http://192.168.1.100/anders/smf/index.php?action=mm
    id.src = "http://192.168.1.100/anders/smf/Themes/default/images/maps/" + gender + "pin_on.gif";
  Line 26 of inline#3 script in http://192.168.1.100/anders/smf/index.php?action=mm
   memClick(img, valArr[1], valArr[2]);
  In unknown script
    doMemClick(this.options[this.selectedIndex].value);
  At unknown location
    {event handler trampoline}
Värdet av gender blir inte insatt. Hur får jag reda på vad de olika variablerna e/blir satta till?
__________________
www.loppmarknader.se

Senast redigerad av bloSSA, 2005-03-29 klockan 22:24
bloSSA besöker inte forumet just nu   Svara med citat
Äldre 2005-03-30, 04:10   #12
@nders
Moderator
Marsvin
 
@nderss avatar
 
Registrerad: 2000-06-30
Ort: Nyköping
Inlägg: 26 815
Lösningar: 3126
Citat:
Erik Juhlin skrev:
Skulle bara vilja påpeka att this.value inte är så vettigt att använda. Den propertyn finns egentligen inte. Det är bara ett Internet Explorer påhitt. Kör med: this.options[this.selectedIndex].value istället.
Ok. this.value fungerar dock fint i FF också, därför valde jag det, då det är mycket kortare att skriva.

Jag håller dock med om att det är snyggare med split().

Problemet är kanske att valArr[2] inte alltid finns, och därför blir det fel?

mvh
__________________
@aviddevguy
@nders besöker inte forumet just nu   Svara med citat
Äldre 2005-03-30, 15:41   #13
bloSSA
Medlem
 
Registrerad: 2000-09-16
Ort: Böketofta
Inlägg: 112
Lösningar: 1
Kanske det, isf behöver jag en if-sats som kollar storleken på valArr, dvs hur många delar det blev när jag splittat. Finns det typ 'sizeof' på någe smidigt sätt?

/Anders
__________________
www.loppmarknader.se
bloSSA besöker inte forumet just nu   Svara med citat
Äldre 2005-03-30, 18:41   #14
@nders
Moderator
Marsvin
 
@nderss avatar
 
Registrerad: 2000-06-30
Ort: Nyköping
Inlägg: 26 815
Lösningar: 3126
Du kan använda valArr.length.

Mvh
__________________
@aviddevguy
@nders besöker inte forumet just nu   Svara med citat
Äldre 2005-03-30, 20:16   #15
Erik Juhlin
Medlem
 
Erik Juhlins avatar
 
Registrerad: 2000-05-27
Ort: Helsingborg
Inlägg: 7 625
Lösningar: 623
valArr[2] blir null om det inte finns...
Så i memClick kan du bara kolla om gender == null.

Kommatecknet i split hade jag missat. Bra att du såg det!
Erik Juhlin besöker inte forumet just nu   Svara med citat
Svar
webForum > Utveckling > Webbutveckling > Javascript

Trådverktyg
Visningsalternativ

Forumregler
Du får inte posta nya trådar
Du får inte posta svar
Du får inte bifoga filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är i GMT +1. Klockan är nu 14:20.


Powered by: vBulletin Version 3.8.6
Copyright © webForum