21. juli 2005 - 23:25Der er
16 kommentarer og 1 løsning
2 mindre problemer med DOM
Hej alle
Jeg har to problemer med mine DOM-objekter, som jeg ikke selv kan løse. De er sikkert nemme for kendere, men en sådan er jeg langt fra.
1) "newCheck.checked = true;" virker ikke i IE. 2) "var replaced = para.replaceChild(newSpan,spanElm);" returnerer "invalid argument" en anden gennemløb.
var mName = ['','januar','februar','marts','april','maj','juni','juli','august','september','oktober','november','december']; for(i=1;13>i;i++){ newSel.options[newSel.length] = new Option(mName[i],i); }
var para = document.getElementById("para_day_name" + strSelected); var spanElm = document.getElementById("span_day_name" + strSelected);
//*** FEJL NR. 2 - FEJLER VED ANDEN GENNEMKØRSEL, HVOR DEN RETURNERE "INVALID ARGUMENT" //BÅDE FORM OG STRSELECTED ALERTES KORREKT - DVS. DE INDEHODLER DEN KORREKTE - HENHOLDSVIS ET OBJEKT OG EN TÆLLER-VÆRDI var replaced = para.replaceChild(newSpan,spanElm); }
function getDayName(dato) { dato = new Date(dato); strDays = new Array("Søndag","Mandag","Tirsdag","Onsdag","Torsdag","Fredag","Lørdag"); return strDays[dato.getDay()]; }
I lang tid har samarbejdsbranchen fokuseret på at forbedre enhedsfunktioner – bedre kameraer, klarere lyd og smartere software. Men den virkelige forvandling handler ikke om funktioner.
Hov, der er faktisk en fejl til, som falder inden for fejl nr. 2.
Funtkionen "updateDayName()", som står for at opdatere ugenavnet ud fra den valgte dato, opdaterer det faktisk ikke, hvis det første sæt af dropdown-boxe som blevet påvirket (onclick-eventen). Så det er endnu en fejl (ud over at den skriver "invalid argument" ved anden gennemløb).
>Det med checkbox'en skyldes nok... Rettet nu virker det. Takker :-)
>eksisterer spanElm jo ikke næste gang, du forsøger at køre den - og skal derfor smide en fejl :) Men kan du ikke hjælpe mig til at ændre min kode, så den ikke smider nogle fejl? Samt at den også kan opdatere det første sæt af dropdown-boxe (hvilket den ikke gør).
Replace-fejlen er faktisk større end før antaget. Det virker slet ikke i Firefox, hvor den skriver "undefined" som ugedage, når man ændre på dropdown-boxene, mens den i IE virker... somme tider op til 3. gennemløb... hvorefter den også fejler.
Her kommer hele koden:
<!--#INCLUDE virtual = "/forum/config.asp"--> <!--#INCLUDE virtual = "/common/inc_dsn_open.asp" --> <!--#INCLUDE virtual = "/forum/inc_header.asp" --> <!--#include virtual = "/common/showAlert.asp"--> <!--#INCLUDE virtual="/common/inc_checkLogin.asp" --><% if strDBNTUserName = "" then response.redirect "index.asp" end if '************************************************ 'DER SKAL VÆRE ET CHECK SÅ MAN IKKE KAN OPDATERE EN ANDENS ARRANGEMENT - KOMMER SENERE
if not request.querystring("ID") = "" then strSQL = "Select * FROM KALENDER_EVENTS WHERE ID = " & request.querystring("ID") Set RS = DataConn.Execute(strSQL)
if NOT RS.EOF then if rs("Author") = memberId or mlev = 4 then strCalenderID = rs("id") strCalenderEvent_Name = rs("Event_Name") strCalenderDate_Day = left(rs("Date"), 2) strCalenderDate_Month = right(left(rs("Date"), 5), 2) strCalenderDate_Year = right(left(rs("Date"), 10), 4) strCalenderTime_Hour = left(right(rs("Date"), 8), 2) strCalenderTime_Minute = left(right(rs("Date"), 5), 2) strCalenderCategory = rs("Category") strCalenderLocation = rs("Location") strCalenderDescription = rs("Description") strCalenderUrl = rs("Url") else 'dataforbindelsen skal lukkes inden viderestilling DataConn.Close response.redirect "kalender_oversigt.asp" end if else 'dataforbindelsen skal lukkes inden viderestilling DataConn.Close response.redirect("admin_oversigt.asp?message=Aktiviteten er tidligere blevet slettet og kan derfor ikke opdateres.") end if end if
var mName = ['','januar','februar','marts','april','maj','juni','juli','august','september','oktober','november','december']; for(i=1;13>i;i++){ newSel.options[newSel.length] = new Option(mName[i],i); }
var para = document.getElementById("para_day_name" + strSelected); var spanElm = document.getElementById("span_day_name" + strSelected); var replaced = para.replaceChild(newSpan,spanElm); }
function getDayName(dato) { dato = new Date(dato); strDays = new Array("Søndag","Mandag","Tirsdag","Onsdag","Torsdag","Fredag","Lørdag"); return strDays[dato.getDay()]; }
if (form.Event_Name.value == "") { alert("Du mangler at vælge en titel til arrangementet"); return false; }
if (form.Event_Name.value.length > 0 && form.Event_Name.value == document.frmUser.Event_Name.value.toUpperCase()){ alert("Det er ikke tilladt at skrive titlen kun med store bogstaver"); return false; }
indlaeg = form.Event_Name.value; txt = indlaeg; indlaeg = indlaeg.replace(/([\wæøå]{14})/gi,"\$1\-"); indlaeg = indlaeg.replace(/--/gi,"-"); if(txt!=indlaeg){ form.Event_Name.value = indlaeg; alert('Du har i titlen indtastet et langt ord uden at anvende en bindestreg - og det vil skabe ravage på kalenderens oversigt.\n\nDerfor er der blevet indsat en bindestreg i det lange ord. Denne bindestreg flytter du blot derhen, hvor ordet naturligt kan deles.'); return false; }
if (form.Date_Day.value == "Blank") { alert("Du mangler at vælge en dato (dag) til arrangementet"); return false; }
if (form.Date_Month.value == "Blank") { alert("Du mangler at vælge en dato (måned) til arrangementet"); return false; }
if (form.Date_Year.value == "Blank") { alert("Du mangler at vælge en dato (år) til arrangementet"); return false; }
if (isDate(form.Date_Day.value, form.Date_Month.value, form.Date_Year.value) == false) { return false; }
if (form.Time_Hour.value == "Blank") { alert("Du mangler at vælge et klokkeslæt (time) til arrangementet"); return false; }
if (form.Time_Minute.value == "Blank") { alert("Du mangler at vælge et klokkeslæt (minut) til arrangementet"); return false; }
if (isTime(form.Time_Hour.value, form.Time_Minute.value) == false) { return false; }
if (form.Category.value == "") { alert("Du mangler at vælge en kategori til arrangementet"); return false; }
if (form.Location.value == "") { alert("Du mangler at vælge et sted til arrangementet"); return false; }
var para = document.getElementById("para_day_name" + strSelected); var spanElm = document.getElementById("span_day_name" + strSelected); var replaced = para.replaceChild(newSpan,spanElm); }
Lukker og slukker - vil du have nogle points, så tryk svar :-)
Det er det, men det er bare så problematisk, når IE og FF tolker forskelligt, rettelse Bill og co. forsøger at lave sine egne standarder, som de tvinger ned over resten af verden.
Synes godt om
Ny brugerNybegynder
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.