Avatar billede pnr Nybegynder
15. april 2006 - 09:26 Der er 18 kommentarer og
2 løsninger

Hjælp til at tilgå a href med javascript

Jeg har følgende kode:

<script type="text/javascript">
    var valgtBillede = 1;       
        document.getElementById['nr_' + valgtBillede].value = "hej med dig";

</script>

<form name="Form1" method="post" action="test.aspx?id=101800313" id="Form1">
                                      <a href="#" id="nr_1" onclick="skift('1')">1</a>
        <a href="#" id="nr_2" onclick="skift('2')">2</a>
        <a href="#" id="nr_3" onclick="skift('3')">3</a>
        <a href="#" id="nr_4" onclick="skift('4')">4</a>
 
</form>

Hvorfor kan jeg ikke tilgå disse a href fra mit javascript?
Avatar billede mclemens Nybegynder
15. april 2006 - 09:48 #1
- tror du skal have return false; med til sidst i din onclick ellers følger den linket ;)
- og hvis du så vil ændre indholdet at a href'en istedet skal du bruge childNodes.item(0).data eller innerHTML istedet for value - her er lige to eksempler - en med et input felt og en med ændring af ahref navnet...
Avatar billede mclemens Nybegynder
15. april 2006 - 09:48 #2
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"

"http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="content-type"

content="text/html; charset=iso-8859-1"><title>Ingen titel</title>

<style type="text/css">

</style>

<script type="text/javascript">
function skift(valgtBillede){
valgtinput = 1;     
document.getElementById('inp_' + valgtinput).value = "Hej med dig, billede "+valgtBillede;
}
</script>


</head>

<body>

<form name="Form1" method="post" action="test.aspx?id=101800313" id="Form1">
        <a href="#" id="nr_1" onclick="skift('1');return false;">1</a>
        <a href="#" id="nr_2" onclick="skift('2');return false;">2</a>
        <a href="#" id="nr_3" onclick="skift('3');return false;">3</a>
        <a href="#" id="nr_4" onclick="skift('4');return false;">4</a>
<input type="text" id="inp_1" value="Vælg et billede">

</form>

</body></html>
Avatar billede mclemens Nybegynder
15. april 2006 - 09:52 #3
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"

"http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="content-type"

content="text/html; charset=iso-8859-1"><title>Ingen titel</title>

<style type="text/css">

</style>

<script type="text/javascript">
function skift(valgtBillede){
document.getElementById('nr_' + valgtBillede).childNodes[0].data = "hej med dig";
}
</script>


</head>

<body>

<form name="Form1" method="post" action="test.aspx?id=101800313" id="Form1">
        <a href="#" id="nr_1" onclick="skift('1');return false;">1</a>
        <a href="#" id="nr_2" onclick="skift('2');return false;">2</a>
        <a href="#" id="nr_3" onclick="skift('3');return false;">3</a>
        <a href="#" id="nr_4" onclick="skift('4');return false;">4</a>

</form>

</body></html>
Avatar billede horsmark Nybegynder
15. april 2006 - 10:23 #4
istedet for:
<a href="#" id="nr_1" onclick="skift('1');return false;">1</a>
...

så er
<a href="java script:void(skift('1'))" id="nr_1">1</a>
...

måske bedre...
Avatar billede mclemens Nybegynder
15. april 2006 - 10:48 #5
ja, hvis man ikke skal have et alternativt link er det selvfølgelig :)
- men hvorfor void??? ... og vi behøver egentlig heller ikke ' når det er tal vi sender til vores script ved nærmere eftertanke :)

<a href="java script:skift(1);" id="nr_1">1</a>
Avatar billede horsmark Nybegynder
15. april 2006 - 11:11 #6
void fortæller browseren at den skal overrule objektets oprindelige eventhandler.

læs mere her:
http://www.tizag.com/javascriptT/javascriptvoid.php eller
http://jennifermadden.com/javascript/specialOperators.html

mht til tallet så har du jo helt ret ;-)
Avatar billede mclemens Nybegynder
15. april 2006 - 11:23 #7
hmmm, kan ikke rigtig se at den er nødvendig...:
<a href="java script:void(skift(1))" id="nr_1">1</a>
... jeg har ingen problemer med javascript deaktiveret med at linket bliver fulgt... og heller ikke med javascript hvis vi bare skriver sådan her:
<a href="java script:skift(1);" id="nr_1">1</a>
... prøv selv ;)
Avatar billede mclemens Nybegynder
15. april 2006 - 11:25 #8
- skal dog ikke kunne sige om en del ældre browsere kræver
void'en men dem er der vel ikke så mange der bruger idag...
Avatar billede horsmark Nybegynder
15. april 2006 - 12:42 #9
Det bedste i dette tilfælde må da så være
<span onClick="skift(1)">1</span>
Avatar billede mclemens Nybegynder
15. april 2006 - 12:51 #10
ja så er der ingen problemer med void... eller:
<b class="bl" onClick="skift(1)">1</b>
og css:
b.bl{text-decoration:underline;cursor:pointer;}
Avatar billede horsmark Nybegynder
15. april 2006 - 12:55 #11
præcist ... hvorfor bruge a tag når man ikke har brug for build-in-defaults :-)
Avatar billede mclemens Nybegynder
15. april 2006 - 13:02 #12
hehe ;)
Avatar billede pnr Nybegynder
15. april 2006 - 21:55 #13
Mange tak for jeres hjælp :-)

Smid nogle svar så får i point på følgende måde:

mclemens 20 point
horsmark 10 point

Lige et hurtigt spørgsmål mere, hvordan kan jeg ændre følgende på samme element:

        document.getElementById('nr_' + valgtBillede).style.color="red";
    document.getElementById('nr_' + valgtBillede).style.fontWeight = "normal"
    document.getElementById('nr_' + valgtBillede).style.textDecoration = "underline"
Avatar billede mclemens Nybegynder
15. april 2006 - 22:47 #14
... hurtigt er at definere en midlertidig kort variabel til objectet som her:
tn=document.getElementById('nr_' + valgtBillede);
og derefter bruge tn.style...

- lidt forskellige id's og klasser er sat på nedenunder ...



<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="content-type" content="text/html; charset=iso-8859-1"><title>Ingen titel</title>

<style type="text/css">
.bl{cursor:pointer;text-decoration:underline;}
.bl2{font-weight:normal;cursor:pointer;text-decoration:underline;}
</style>

<script type="text/javascript">
function skift(valgtBillede){
tn=document.getElementById('nr_' + valgtBillede);
tn.style.color="red";
tn.style.fontWeight = "normal"
tn.style.textDecoration = "underline"
}
</script>


</head>

<body>

<form name="Form1" method="post" action="test.aspx?id=101800313" id="Form1">
        <b onclick="skift(1);" class="bl" class="bl2">1</b>
        <b onclick="skift(2);" class="bl">2</b>
        <b onclick="skift(3);" id="nr_3">NR 3</b>
        <b onclick="skift(4);" id="nr_4" class="bl">NR 4</b>

<br><br><br><br>

<b id="nr_1">ABC 1</b>
<a id="nr_2" href="http://www.eksperten.dk">EKS 2</a>

</form>

</body></html>
Avatar billede mclemens Nybegynder
15. april 2006 - 22:48 #15
... hurtigt -> det hurtigste
Avatar billede horsmark Nybegynder
16. april 2006 - 08:48 #16
fedt det spiller
Avatar billede mclemens Nybegynder
16. april 2006 - 09:44 #17
<b onclick="skift(1);" class="bl" class="bl2">1</b>
^ hmm, borset fra at det dobbelt class er noget rod :D
Avatar billede roenving Novice
17. april 2006 - 06:57 #18
Tjah, det bør man vel skrive:

<b onclick="skift(1);" class="bl bl2">1</b>
Avatar billede pnr Nybegynder
18. april 2006 - 06:38 #19
Endnu engang mange tak for jeres hjælp :-)
Avatar billede mclemens Nybegynder
18. april 2006 - 09:50 #20
- det var så lidt :)
og tak for point :)
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