[JS/FF] Functies werken niet in FF

Pagina: 1
Acties:

  • 2_05
  • Registratie: November 2004
  • Laatst online: 28-04 16:25
Ik ben nu bezig JS te begrijpen en dit lukt al aardig. Nu heb ik het voor elkaar gekregen iets werkend te krijgen in IE, maar helaas werkt het nog helemaal niet in FF. Het gaat om de volgende site, met volledige broncode al daar.

Daarin de volgende 3 functies:

1: Controleerd of alle benodigde selecties zijn gedaan, geeft een melding indien niet het geval en laadt dan niks:
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
function checkData()
{
var correct = true
if (document.calculus.chapter.value == "HS" &&
    document.calculus.paragraph.value == "PG" &&
    document.calculus.number.value == "OG")
 {correct = false; alert("Please select chapter, paragraph and exercise")}
else if (document.calculus.paragraph.value == "PG" &&
    document.calculus.number.value == "OG")
 {correct = false; alert("Please select paragraph and exercise")}
else if (document.calculus.chapter.value == "HS" &&
    document.calculus.paragraph.value == "PG")
 {correct = false; alert("Please select chapter and paragraph")}
else if (document.calculus.chapter.value == "HS" &&
    document.calculus.number.value == "OG")
 {correct = false; alert("Please select chapter and exercise")}
else if (document.calculus.number.value == "OG")
 {correct = false; alert("Please select exercise")}
else if (document.calculus.chapter.value == "HS")
 {correct = false; alert("Please select chapter")}
else if (document.calculus.paragraph.value == "PG")
 {correct = false; alert("Please select paragraph")}
else if (document.calculus.edition.value == "4" &&
    document.calculus.number.value++ > 13)
 {correct = false; alert("When searching answers for the Fourth edition, the exercise number cannot be bigger than 12, please read explenation on the page for more information")}

return correct}


2: Dienen ervoor om direct een volgend of vorige document te selecteren en te laden. (zie website in IE voor voorbeeld)
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
function nextpdf(){
var number = document.calculus.number.selectedIndex;
document.calculus.number.value = Math.min(Math.max(eval(1 + document.calculus.number.selectedIndex),1),80);
pausecomp(500)
//setTimeout(,);}

function previouspdf(){
var number = document.calculus.number.selectedIndex;
document.calculus.number.value = Math.min(Math.max(eval(document.calculus.number.selectedIndex - 1),1),80);
pausecomp(500)
//setTimeout(,);}


3: Deze laatste functie dient om een tijdvertraging in te bouwen, om te voorkomen dat als je 5 documenten verder wilt, niet direct alle 5 de documenten na elkaar gaat laden (niet handig voor in mijn logboek). Nu is het nog zo dat je in die halve seconde vertraging helemaal niks meer kunt doen, maar ik wil dus eigenlijk dat je next kan klikke zo vaak als je wilt, en als je n halve seconde niet meer klikt, dat ie dan pas gaat laden. Maar dit is me nog niet gelukt, heb ook setTimeout() geprobeerd.
JavaScript:
1
2
3
4
5
6
7
8
function pausecomp(millis)
{
date = new Date();
var curDate = null;

do { var curDate = new Date(); }
while(curDate-date < millis);
}


In het form worden ze alsvolgt aangeroepen:
HTML:
1
<form onSubmit="return checkData()" name="calculus" action="selecter2.php" target=main method="POST">

en
HTML:
1
2
3
<input type="submit"   value="Previous" onClick="javascript:previouspdf()">
<input type="submit" name="send form" value="Answer">
<input type="submit"   value="Next" onClick="javascript:nextpdf()">


Dus wat moet ik doen om, met name de 1e 2 functies, te late werken in FF zoals ze het ook doen in IE en hoe krijg ik die tijdvertraging zoals ik dat toe zou willen passen?

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 09:03

crisp

Devver

Pixelated

Nou, zowel IE als Ff geven een JS error hoor:
JavaScript:
1
2
3
4
5
Error: missing } after function body
Source File: http://www.stack.nl/~anton/calculus/select.html
Line: 72, Column: 5
Source Code:
//-->

Een beetje beter indenten doet al wonderen soms ;)

Verder: gebruik niet de shorthand dot-notation, maar de volgende - correctere - notatie:
JavaScript:
1
document.forms['id-van-je-form'].elements['element-name']

of nog beter: geef vanuit je onsubmit handler alvast een reference mee naar je formulier middels het 'this' keyword.

Vwb pauzes: toch setTimeout gebruiken, eventueel ism een global var die bijhoudt of er geprocessed wordt.

eval = evil en niet nodig hier

in een inline eventhandler hoef/hoor je niet het javascript: pseudo-protocol aan te geven

last but not least: Firefox heeft een hele mooie javascript console met (itt IE) duidelijke foutmeldingen; gebruik dat ding!

Intentionally left blank


  • 2_05
  • Registratie: November 2004
  • Laatst online: 28-04 16:25
crisp schreef op dinsdag 04 oktober 2005 @ 22:47:
Nou, zowel IE als Ff geven een JS error hoor:
JavaScript:
1
2
3
4
5
Error: missing } after function body
Source File: http://www.stack.nl/~anton/calculus/select.html
Line: 72, Column: 5
Source Code:
//-->

Een beetje beter indenten doet al wonderen soms ;)
Wouw, wat doet zo´n haakje toch wonderen 8)7
last but not least: Firefox heeft een hele mooie javascript console met (itt IE) duidelijke foutmeldingen; gebruik dat ding!
Wist helemaal niet dat die dingen bestonden :? Maar wel erg handig idd ja. Is dit console ook de plek waar je die hierboven genoemde foutmelding te zien zou moeten krijgen? Ik krijg die namelijk niet te zien?

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 09:03

crisp

Devver

Pixelated

Ja, die error had je daarin moeten zien.

Intentionally left blank


  • disjfa
  • Registratie: April 2001
  • Laatst online: 08-01 11:17

disjfa

be

Die krijg je ook niet automatisch te zien 8)7 Die moet je ff openzetten voor als je gaat debuggen. Tools -> javascript console. Die zit overigens ook in de meeste andere browsers. Alleen IE mist er een. Nouja je hebt wel de developers toolbar maar dan werkt IE niet meer

disjfa - disj·fa (meneer)
disjfa.nl