Avatar billede peturkirke Novice
18. maj 2003 - 01:10 Der er 21 kommentarer og
1 løsning

null or not an object

jeg har et javascript, som giver følgende fejl:

"document.forms.i1.time2
is null or not an object"

jeg har en mistanke om, at fejlen skyldes denne linje, som kalder en funktion, som hedder setup:

setup(document.forms['i1'].time2.value,"i1");

er der nogen tydelig syntaksfejl her ?
eller hvad skyldes fejlmeldingen ?
(har kun 10 poeng tilbage)
Avatar billede grunken Nybegynder
18. maj 2003 - 01:16 #1
måske man kunne se din form osse :)

det er jo lidt svært a sidde og gisne om hvad den skal hedde, men prøv

document.forms[0].time2.value
Avatar billede grunken Nybegynder
18. maj 2003 - 01:17 #2
og fejlmeldingen skyldes at den ikke kan finde det objekt det prøver at kalde :)
Avatar billede peturkirke Novice
18. maj 2003 - 01:30 #3
<FORM name="i1">
    <input type="text" name="time" size="20" value=" "> Tíð eftir
    <input type="hidden" name="time2" size="0" value="juni 04, 2003 21:00:00">
    </FORM>
Avatar billede roenving Novice
18. maj 2003 - 01:33 #4
-- og den sandsynligste grund er, som grunken antyder i sin første kommentar, at du har rod i navngivningen af din form, dit felt, eller at du ikke refererer til noget som ligger inde for samme dokument -- hvis du f.eks har det i en anden frame ...
Avatar billede peturkirke Novice
18. maj 2003 - 01:33 #5
document.forms[0].time2.value
hjælper ikke - samme fejlmelding, bare 0 istedet for i1
Avatar billede peturkirke Novice
18. maj 2003 - 01:34 #6
alt er i samme frame - scriptet har jeg sat ind lige før <body>, og formen er et sted under body
Avatar billede roenving Novice
18. maj 2003 - 01:37 #7
Når du kigger i kilden, kan du så se dit hidden field ?-]
Avatar billede peturkirke Novice
18. maj 2003 - 01:38 #8
ja jeg ser hidden field i kilden
Avatar billede roenving Novice
18. maj 2003 - 01:48 #9
Prøv at sætte id="i1" ind i form-taggen og brug:

document.getElementById("i1").time2

...
Avatar billede grunken Nybegynder
18. maj 2003 - 01:55 #10
roenving rent logisk burde det jo  være det samme men hvem ved ;D

jeg vil selvfølgelig anbefale at man fjerner de tal i form/inputnavne

<FORM name="iet">
    <input type="text" name="time" size="20" value=" "> Tíð eftir
    <input type="hidden" name="timeto" size="0" value="juni 04, 2003 21:00:00">
</FORM>

setup(document.forms[0].timeto.value,"iet");

og hvis det nu stadig bøvler!, så smid hele koden her eller link til den, så skal vi nok få det til at du!
Avatar billede roenving Novice
18. maj 2003 - 01:57 #11
>>grunken, du har jo ret -- medmindre petur er i mozilla eller opera eller en anden som ikke understøtter de _gamle_ metoder ...
Avatar billede peturkirke Novice
18. maj 2003 - 02:12 #12
Her er hele koden. Det skulle være det, som i har brug for:

<html>

<head>
... noget kode
</head>

<SCRIPT LANGUAGE="JAVASCRIPT">
function start()
{

setup(document.forms[0].time2.value,"i1");

setup(document.forms[0].time2.value,"i2");

repeat()
}

start();

function repeat()
{

down("i1");

down("i2");

setTimeout("repeat()",1000);
}

function setup(day,box)
{
today = (new Date()).getTime();
the_day = (new Date(day)).getTime();
time = (the_day - today);
document.forms[box].time2.value=time;
}

function down(box)
{
document.forms[box].time2.value = document.forms[box].time2.value - 1000;
time = document.forms[box].time2.value;
days = (time - (time % 86400000)) / 86400000;
time = time - (days * 86400000);
hours = (time - (time % 3600000)) / 3600000;
time = time - (hours * 3600000);
mins = (time - (time % 60000)) / 60000;
time = time - (mins * 60000);
secs = (time - (time % 1000)) / 1000;
if(days==1) out = "1 day, ";
else out = days+" days, ";
if(hours < 10) out = out+"0";
out = out+hours+":";
if(mins < 10) out = out+"0";
out = out+mins+":";
if(secs < 10) out = out+"0";
out = out+secs;
if(days+hours+mins+secs> 1) document.forms[box].time.value = out;
else document.forms[box].time.value = ("feilur");
}
// I'm back! -->
</SCRIPT>
<SCRIPT> start(); </SCRIPT>
<body>


... noget mere javascript (en helt anden funktion)
... meget html


    <FORM name="i1">
    <input type="text" name="time" size="20" value=" "> Tíð eftir
    <input type="hidden" name="time2" size="0" value="juni 04, 2003 21:00:00">
    </FORM>

... noget mere html


    <FORM name="i2">
    <input type="text" name="time" size="20" value=" "> Tíð eftir
    <input type="hidden" name="time2" size="0" value="juni 06, 2003 21:00:00">
    </FORM>

... mere html
Avatar billede grunken Nybegynder
18. maj 2003 - 02:29 #13
aha, den er jo simpel ;), du kører

<SCRIPT> start();</SCRIPT>

inden at dine forms er blevet loadet :)

smid den ned efter dine forms :)
Avatar billede roenving Novice
18. maj 2003 - 02:29 #14
Eller sæt den i onload:

<body onload="start();">
Avatar billede peturkirke Novice
18. maj 2003 - 03:09 #15
tak
jeg flyttede start til onload
scriptet fungerer nu, og det gjorde det ikke før, men javascript fejlen fremkommer stadigvæk ?
Avatar billede roenving Novice
18. maj 2003 - 03:14 #16
-- jeg fik ikke en javascript-fejl, men 'feilur' som tiden ...

-- du skulle have taget og tilpasset det script, jeg viste tidligere !-)
Avatar billede peturkirke Novice
18. maj 2003 - 03:20 #17
nej jeg har ændret det igen
nu er tiden ok
Avatar billede roenving Novice
18. maj 2003 - 03:21 #18
bueno .-)
Avatar billede peturkirke Novice
18. maj 2003 - 03:23 #19
men fejlen er der stadigvæk
Avatar billede peturkirke Novice
18. maj 2003 - 03:29 #20
er du sikker på, at tal giver problemer i form-navne ?
Avatar billede roenving Novice
18. maj 2003 - 03:32 #21
-- *burde* ikke gøre det da det er et lovligt tegn i en identifier, bare det ikke står forrest ...
Avatar billede peturkirke Novice
10. juli 2003 - 18:09 #22
jeg tager poengene tilbage - jeg har fundet fejlen
problemet var, at start() funktionen kaldes 2 gange i scriptet
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