Avatar billede walden Nybegynder
20. juli 2007 - 18:07 Der er 13 kommentarer og
1 løsning

lægge to variabler sammen

Jeg har følgende kode som jeg ikke kan få til at virke efter hensigten.

function menu_change() {
var A = "menu";
var B = "one";
var bgcenter = A+B;

setLayerBgSrc(bgcenter,'media/grafik/knap_over_bg.gif');
}

setLayerBgSrc(bgcenter,'media/grafik/knap_over_bg.gif');

henviser til en funtion, som ændrer baggrundsbilledet i et DIV. Det DIV som skal have et nyt baggrundsbillede, hedder menuone og det virker fint, hvis jeg bare skriver:

setLayerBgSrc(menuone,'media/grafik/knap_over_bg.gif');

men jeg vil gerne skabe menuone ved at lægge var A sammen med var B = bgcenter. Jeg tror at problemet ligger i, at jeg får citationstegnene med så bgcenter bliver til "menuone" og ikke menuone.

Det er lidt svært at formulerer, men jeg håber at I forstår spørgsmålet alligevel.
Avatar billede windcape Praktikant
20. juli 2007 - 18:16 #1
Dvs. du forsøger at lave et call back til en tidligere defineret funktion.

En måde at gøre det på er setTimeout(bgcenter,0); hvilket så vil kører menuone() efter 0 milisekunder.

Men der er sikkert pænere løsninger :)
Avatar billede walden Nybegynder
20. juli 2007 - 18:28 #2
Jeg vil gerne bruge

var bgcenter

dynamisk, sådan så jeg kan skifte baggrundsfarve på andre DIVS ved at ændre på
var A og var B.

Fx noget i den her retning:

function menu_change(A,B) {

var bgcenter = A+B;

setLayerBgSrc(bgcenter,'media/grafik/knap_over_bg.gif');
}

Funktionen skal så kaldes fra et link, der kan ser sådan ud:

<a href="" onmouseover="menu_change(menu,one)">test</a>

men det virker bare ikke ... kan I se hvorfor?
Avatar billede mclemens Nybegynder
20. juli 2007 - 18:53 #3
<a href="" onmouseover="menu_change('menu','one')">test</a>

Og måske: (men det er afhængig af
hvordan setLayerBgSrc( håndterer inputtet).

var bgcenter = document.getElementById(A+B);
Avatar billede walden Nybegynder
20. juli 2007 - 19:49 #4
Jeg har skippet den funktion jeg henviste til og
lavet det sådan her istedet for:

<a href" onmouseover="menu_change('ONE');">test 1</a>
<a href" onmouseover="menu_change('TWO');">test 2</a>
<a href" onmouseover="menu_change('THREE');">test 3</a>

...


function menu_change(nummer) {
document.getElementById('MCL'+nummer).style.backgroundImage = "url(media/grafik/knap_over_lcorner.gif)";
document.getElementById('MENU'+nummer).style.backgroundImage = "url(media/grafik/knap_over_bg.gif)";
document.getElementById('MCR'+nummer).style.backgroundImage = "url(media/grafik/knap_over_rcorner.gif)";
}

Jeg ved ikke om det giver mening for andre ... men jeg siger i hvert fald tak for hjælpen ... jeg blev inspireret af mclemens svar ... derfor får han point'ene
Avatar billede mclemens Nybegynder
20. juli 2007 - 20:07 #5
Giver fin mening for mig. Her er et svar og tak for point :)
Avatar billede thesurfer Nybegynder
01. august 2007 - 00:17 #6
Jeg ville aldrig bruge href=""...

Hvis linket ikke skal indlæse en adresse, ville jeg bruge:

<a href="#" onmouseover="menu_change('menu','one');return false">test</a>
Avatar billede mclemens Nybegynder
01. august 2007 - 08:19 #7
Reelt ville jeg ikke selv bruge et link, som ikke "er" et link.
Jeg ville nok vælge: <span onmouseover="menu_change('menu','one');"
style="cursor:pointer;">test</span> og så måske have et script, der
viste menuen, hvis javascript var aktiveret og ellers stod der en besked
om at javascript var påkrævet. Vælger du links bør du bruge Thesurfer's forslag.
Avatar billede walden Nybegynder
01. august 2007 - 12:47 #8
Hvis det endelig skal være, er det så egentligt ikke mest korrekt med
<a href="java script:void(0);" onmouseover="menu_change('menu','one');return false">test</a>?
Avatar billede mclemens Nybegynder
01. august 2007 - 13:23 #9
M.h.t. href="java script:void(0);" vs. href="#", så giver
href="java script:void(0);" fordelen at siden ikke blinker
(i f.eks. FF med javascript deaktiveret), selvom man klikker.
... Du behøver dog ikke både return false og java script:void(0); ...
<a href="java script:void(0);" onmouseover="menu_change('menu','one');">test</a>?

Men spørgsmålet er om hvorvidt man ikke bør skjule de links
(eller mouseover elementer) - for at undgå forvirring i
de tilfælde, hvor browseren ikke understøtter javascript.
- Og så er href="java script:void(0);" ikke en "fordel", da
brugere uden js ikke ser dem og return false; virker med js.

Det mest korrekte at bruge, når man ikke skal
bruge et link: Er ikke at bruge et link element.
Avatar billede olebole Juniormester
01. august 2007 - 16:05 #10
<ole>

Der er ingen grund til at returnere falsk på en onmouseover-handler. Et link har ingen default-handling på onmouseover, så der er ikke en handling at stoppe.

Linket har derimod en default-handling på (eller rettere lige efter) onclick - og dén bør man nok stoppe:
    <a href="#" onmouseover="menu_change('menu','one');" onclick="return false">test</a>

/mvh
</bole>
Avatar billede olebole Juniormester
01. august 2007 - 16:06 #11
- men jeg ville nok heller ikke bruge et link  =)
Avatar billede thesurfer Nybegynder
01. august 2007 - 16:22 #12
Det var naturligvis i onclick, at jeg mente at "return false" skulle i..
En lille fejl fra min side..

Det giver jo absolut ingen mening at putte "return false" i onmouseover..
Avatar billede olebole Juniormester
01. august 2007 - 17:03 #13
- surferen var inde i en tunnel ... det har vi skam respekt for!  ;o)
Avatar billede mclemens Nybegynder
01. august 2007 - 17:32 #14
Hehe, overså også at den ikke var sat i en onclick :o)
( Det havde dog ingen betydning for klikbarhed uden js i FF )

<a href="#" onmouseover="menu_change('menu','one');" onclick="return false">test</a>
- Er klikbart i FF uden javascript aktiveret.

<a href="java script:void(0)" onmouseover="menu_change('menu','one');">test</a>
- Er ikke klikbart i FF uden javascript aktiveret.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester