---
title: "'a href' -->'form'"
type: "forum-thread"
url: "https://www.webforum.nu/amne/javascript/125344-a-href-form"
topic: "JavaScript"
topic_url: "https://www.webforum.nu/amne/javascript"
author: "bloSSA"
published: "2005-03-29T16:11:00.000Z"
updated: "2005-03-30T19:16:02.000Z"
replies: 14
views: 563
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/javascript/125344-a-href-form"
---

# 'a href' -->'form'

## #1 — bloSSA, 2005-03-29T16:11Z

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:

```
<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:

```
<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:

```
<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

Permalänk: https://www.webforum.nu/p/125344

## #2 — @nders, 2005-03-29T18:13Z

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...

Permalänk: https://www.webforum.nu/p/1581675

## #3 — bloSSA, 2005-03-29T18:30Z

:r 
Jag har städat mitt första inlägg nu. \*sorry\*

/Anders

Permalänk: https://www.webforum.nu/p/1581683

## #4 — @nders, 2005-03-29T18:33Z

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?)

Permalänk: https://www.webforum.nu/p/1581688

## #5 — bloSSA, 2005-03-29T18:41Z

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.

Permalänk: https://www.webforum.nu/p/1581692

## #6 — @nders, 2005-03-29T18:49Z

Eftersom det är lite olika parametrar som ska skickas med hade jag antagligen gjort något sånt här:

```
<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():

```
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

Permalänk: https://www.webforum.nu/p/1581697

## #7 — bloSSA, 2005-03-29T19:00Z

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!

Permalänk: https://www.webforum.nu/p/1581700

## #8 — Erik Juhlin, 2005-03-29T19:50Z

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.

Permalänk: https://www.webforum.nu/p/1581715

## #9 — Erik Juhlin, 2005-03-29T19:55Z

Så här hade dock jag skrivit. If-satser känns inte hållbart i längden.

```
<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>
```

Permalänk: https://www.webforum.nu/p/1581717

## #10 — bloSSA, 2005-03-29T20:35Z

Det där sista ser smidigt ut, så vill jag ha det. :-)

Det funkar dock inte. Jag testade även att ändra splitten till

```
val.split(",")
```

Jag har testat med Opera och Mozilla. I Opera är det första felmeddelandet jag får:

```
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...?  ;-)

Permalänk: https://www.webforum.nu/p/1581736

## #11 — bloSSA, 2005-03-29T20:57Z

Upps! fel log. Har aldrig använt javaloggen tidigare... :-)

Det verkar nästan funka. det som blir fel är:

```
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 [url]http://192.168.1.100/anders/smf/index.php?action=mm[/url]
    id.src = "http://192.168.1.100/anders/smf/Themes/default/images/maps/" + gender + "pin_on.gif";
  Line 26 of inline#3 script in [url]http://192.168.1.100/anders/smf/index.php?action=mm[/url]
   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?

Permalänk: https://www.webforum.nu/p/1581746

## #12 — @nders, 2005-03-30T03:10Z

> **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

Permalänk: https://www.webforum.nu/p/1581808

## #13 — bloSSA, 2005-03-30T14:41Z

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

Permalänk: https://www.webforum.nu/p/1582036

## #14 — @nders, 2005-03-30T17:41Z

Du kan använda *valArr.length*. 

Mvh

Permalänk: https://www.webforum.nu/p/1582093

## #15 — Erik Juhlin, 2005-03-30T19:16Z

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! :)

Permalänk: https://www.webforum.nu/p/1582151

---

Tråden på webben: https://www.webforum.nu/amne/javascript/125344-a-href-form
