03. oktober 2007 - 16:03
Der er
13 kommentarer og 1 løsning
Forskel på Javascript på IE 6 og IE 7
Er der nogen der kan svare på hvad der er ændret i Javascript fortolkningen fra IE 6 til IE 7? Jeg har et javascript array der virker fint i IE 7 men i IE 6 fejler det?
Annonceindlæg fra Kommando
03. oktober 2007 - 16:19
#1
Hvordan ser det ud ?-)
03. oktober 2007 - 16:21
#2
IE7 JS er version 1.5 IE6 JS er version 1.4 Der er helt sikkert nogle forskelle.
03. oktober 2007 - 17:40
#3
<ole> Hvad har du problemer med? /mvh </bole>
04. oktober 2007 - 09:19
#4
Det er faktisk en fejl jeg får i et omkodet script fra roenving. Jeg har brugt hans multiple select, og udbygget det så det har 6 niveauer. Koden er på ca 1200 linier, da der kan vælges i en organisationsstruktur, der har mere end 300 forskellige valgmuligheder. Koden til selve styringen er her: function createOpts(sel){ var s = new Array(); var num = 0, txt = "arr"; var ar = opt = null; var n = sel.selectedIndex; var args = createOpts.arguments.length; for(var i=1;args>i;i++){ s[i-1] = document.getElementById(createOpts.arguments[i]); if(s[i-1]==sel)num=i; } if(args>1){ if(s[num])sel = s[num]; else return; } if(n==0&&args>1){ for(i=num;args>i+1;i++){ s[i].length = 0; opt = document.createElement('OPTION'); s[i].appendChild(opt); opt.value = ""; opt.text = "-- Choose if applicable --"; } return true }; for(i=0;num>i;i++){ txt+="["+(s[i].selectedIndex-1)+"][1]"; } ar = eval(txt); sel.length = 0; opt = document.createElement('OPTION'); sel.appendChild(opt); opt.value = ""; opt.text = "-- Choose if applicable --"; for(i=0;ar.length>i;i++){ opt = document.createElement('OPTION'); sel.appendChild(opt); if(typeof ar[i] == 'object'){ opt.value = ar[i][0]; opt.text = ar[i][0]; }else{ opt.value = ar[i]; opt.text = ar[i]; } } if(args>num+2){ for(i=num+1;args-1>i;i++){ s[i].length = 0; opt = document.createElement('OPTION'); s[i].appendChild(opt); } } } function initSels(){ createOpts(document.getElementById('sel3')); var main_department; main_department = 'IT'; if (main_department > '') { objSelect = document.getElementById('sel3'); for (var oIndex = 0; oIndex < objSelect.options.length; oIndex++) { if (objSelect.options[oIndex].text == main_department) { objSelect.selectedIndex = oIndex; createOpts(document.UserData.main_department,'sel3','sel4','sel5','sel6','sel7','sel8'); } } } var region_department; region_department = 'Group'; if (region_department > '') { objSelect = document.getElementById('sel4'); for (var oIndex = 0; oIndex < objSelect.options.length; oIndex++) { if (objSelect.options[oIndex].text == 'Group') { objSelect.selectedIndex = oIndex; createOpts(document.UserData.region_department,'sel3','sel4','sel5','sel6','sel7','sel8'); } } } var sub_department1; sub_department1 = 'Operations'; if (sub_department1 > '') { objSelect = document.getElementById('sel5'); for (var oIndex = 0; oIndex < objSelect.options.length; oIndex++) { if (objSelect.options[oIndex].text == 'Operations') { objSelect.selectedIndex = oIndex; createOpts(document.UserData.sub_department1,'sel3','sel4','sel5','sel6','sel7','sel8'); } } } var sub_department2; sub_department2 = ''; if (sub_department2 > '') { objSelect = document.getElementById('sel6'); for (var oIndex = 0; oIndex < objSelect.options.length; oIndex++) { if (objSelect.options[oIndex].text == '') { objSelect.selectedIndex = oIndex; createOpts(document.UserData.sub_department2,'sel3','sel4','sel5','sel6','sel7','sel8'); } } } var sub_department3; sub_department3 = ''; if (sub_department3 > '') { objSelect = document.getElementById('sel7'); for (var oIndex = 0; oIndex < objSelect.options.length; oIndex++) { if (objSelect.options[oIndex].text == '') { objSelect.selectedIndex = oIndex; createOpts(document.UserData.sub_department3,'sel3','sel4','sel5','sel6','sel7','sel8'); } } } var sub_department4; sub_department4 = ''; if (sub_department4 > '') { objSelect = document.getElementById('sel8'); for (var oIndex = 0; oIndex < objSelect.options.length; oIndex++) { if (objSelect.options[oIndex].text == '') { objSelect.selectedIndex = oIndex; createOpts(document.UserData.sub_department4,'sel3','sel4','sel5','sel6','sel7','sel8'); } } } } Den linie den fejler i er: sel.length = 0;
04. oktober 2007 - 09:20
#5
funktionen function initSels() køres når siden loades, for at allerede valgte felter fra forrige gennemkørsel, automatisk bliver valgt igen, når siden loades.
05. oktober 2007 - 09:10
#6
Er der nogen bud?
05. oktober 2007 - 17:37
#7
Ja, det er en lidt 'beskidt' måde at tømme et select-element på, som jeg også tidligere har brugt. Prøv dette i stedet: while (sel.firstChild) sel.removeChild(sel.firstChild); - og gør det samme lidt længere ned i koden, hvor du tømmer select-elementet s[i]
08. oktober 2007 - 12:02
#8
Hej Ole, Nu får den fint nok loadet siden uden fejl, men den får ikke sat de gamle værdier ind. Så den får ikke valgt de muligheder der skal vælges i function initSels()
10. oktober 2007 - 18:51
#9
nogen bud?
10. oktober 2007 - 20:07
#10
Debugging,, desværre :|
11. oktober 2007 - 14:12
#11
det må du forklare lidt nærmere
11. oktober 2007 - 16:30
#12
Du skal finde en script-debugger til din browser og single-steppe gennem koden. Så bliver det tydeligt hvor og hvorfor det går galt.
11. oktober 2007 - 17:51
#13
Det er ikke til for os at debugge din kode uden noget omgivende kode og data at teste den i. Prøv at sætte alerts ind og find ud af, om en variabel er tom - eller en betingelse i en if-sætning ikke er opfyldt - eller lignende. Prøv at begynde enten så tæt på det sted, de ved, det går galt, og bevæg dig baglæns i koden - eller start i begyndelsen af hændelseskæden og bevæg dig fremad, til noget ikke er som forventet. Alert variablers og array's indhold - og alert innerHTML'en af de forskellige selects - alt efter, hvad der er interessant/vigtigt på det pågældende sted i koden. Det er måden, jeg selv finder fejl på, men det kræver, man har koden liggende i de rette omgivelser, hvor den skal virke ... og det er nok ikke realistisk med så lang en kode i en E-tråd :)
15. december 2015 - 20:38
#14
lukkes
Vi tilbyder markedets bedste kurser inden for webudvikling