Avatar billede stuf99 Nybegynder
26. september 2007 - 15:22 Der er 14 kommentarer og
1 løsning

Kan man tilgå .onclick

Hej
Jeg har et behov for at ændre .onclick i en javascript funktion. Men hvordan gør jeg, lige meget hvad jeg gør så har jeg ikke succes med det!

Min kode ser sådan ud
<html>
<head>
<SCRIPT TYPE="text/javascript">

function test1()
{
alert("test1");
}

function test2()
{
  document.getElementsByName("tomatoes").onclick = "test3()";
}
function test3()
{
    test1()
    alert("testALL");
}

</SCRIPT>

</head>
<body>
<INPUT TYPE=CHECKBOX NAME="tomatoes" onclick="test1()"><H1>Text</H1>
<button onclick="test2()">Test</button>
</body>
</html>
Avatar billede jensgram Nybegynder
26. september 2007 - 15:25 #1
Utestet:

function test2()
{
  document.getElementsByName("tomatoes").onclick = test3;
}


eller:

function test2()
{
  document.getElementsByName("tomatoes").onclick = function() {
    test3();
  }
}
Avatar billede barklund Nybegynder
26. september 2007 - 15:27 #2
id="tomatoes" - ikke name. name bruges til noget andet end id.
Avatar billede barklund Nybegynder
26. september 2007 - 15:27 #3
Der skal muligvis OGSÅ være name til brug i formen, men ikke til getElementById (som logisk nok henter et element ud fra id).
Avatar billede jensgram Nybegynder
26. september 2007 - 15:35 #4
barklund > Jep, det havde jeg ikke set.
Avatar billede olebole Juniormester
26. september 2007 - 23:47 #5
<ole>

Det er ikke rigtigt  :)

Årsagen er derimod, at getElementsByName returnerer et array af elementer (getElements). Derfor skal koden se sådan ud:
    document.getElementsByName("tomatoes")[0].onclick = "test3()";

/mvh
</bole>
Avatar billede olebole Juniormester
26. september 2007 - 23:49 #6
Vrøvl, olebole! Vi krydser lige med jensgrams  ;D
    document.getElementsByName("tomatoes")[0].onclick = test3;
Avatar billede barklund Nybegynder
27. september 2007 - 00:55 #7
Ah, der stod getElementsByName og ikke ..ById - den bruger jeg nu så sjældent :)
Avatar billede olebole Juniormester
27. september 2007 - 01:42 #8
Jeg kunne godt læse ud af dine kommentarer, du ikke havde bemærket, metoden  ;o)
Avatar billede olebole Juniormester
27. september 2007 - 01:44 #9
- og nu, da jeg i forvejen smider om mig med overflødige kommaer, må du lige sige til, hvis du også har brug for nogle punktummer. Zq meget godt, min dansklærer ikke læser med her - hvis hun endnu lever  ;D
Avatar billede jensgram Nybegynder
27. september 2007 - 07:18 #10
Min forvirring vil p.t. ingen ende tage :) ByName havde jeg slf heller ikke set :)
Avatar billede barklund Nybegynder
27. september 2007 - 09:49 #11
Det er okay... Jeg har altid rigeligt punktummer... Jeg kaster... dem.. om..... mig.. i. grams........!..
Avatar billede stuf99 Nybegynder
27. september 2007 - 10:24 #12
Hej eksperter
Jeg har ændret koden til
<html>
<head>
<SCRIPT TYPE="text/javascript">

function test1()
{
alert("test1");
}

function test2()
{
  document.getElementsByName("tomatoes")[0].onclick = "test3()";
 
}
function test3()
{
    test1()
    alert("testALL");
}

</SCRIPT>

</head>
<body>
<INPUT TYPE=CHECKBOX NAME="tomatoes" onClick="test1()"><H1>Text</H1>
<button onclick="test2()">Test</button>
</body>
</html>

Tildelingen går ok, men efter tildelingen af ny onclick sker der ikke noget når jeg klikker på checkboksen! Når jeg kigger i debuggeren, så starter onclick med at være udfyldt med {...}. Efter tildelingen står der så fint nok "test3()". Hvorfor kan jeg ikke se at der står "test1()" i debuggeren til at starte med?
Avatar billede stuf99 Nybegynder
28. september 2007 - 12:59 #13
fik det til at virke, fik ikke lige rettet det olebole efterfølgende skrev. Smid et svar olebole og du får point :-)
Avatar billede stuf99 Nybegynder
10. september 2010 - 16:53 #14
lukker
Avatar billede stuf99 Nybegynder
10. september 2010 - 16:54 #15
lukker
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