18. juli 2005 - 13:44Der er
125 kommentarer og 1 løsning
Plus 7 dage i JS?
Hej alle
Jeg har et script, som skaber nogle dropdown-box (alt efter hvor mange brugeren skal anvende). Jeg forsøger, at gøre det sådan, at den næste dropdown-box, som skabes, har en værdi, som er en uge længere fremme end den forrige dropdown-box.
F.eks.: Første dropdown: 01-01-2001 Anden dropdown: 08-01-2001 Tredje dropdown: 15-01-2001
Problemet er så bare, at jeg ikke kan få koblet min dage-i-måned-funktion sammen med mit script, så jeg kan få den til at hoppe til den næste måned på den rigtige måde - altså hvor den tager med i beregningen, hvor mange dage der er i en bestemt måned.
<script type="text/javascript">
var intSelects = 0;
function appendSelect(){
intSelects++;
if (intSelects == 1) { var thisDay = new Date().getDate(); var thisMonth = new Date().getMonth(); var thisYear = new Date().getFullYear(); } else { // plus en uge *********** DET ER HER JEG SKAL HAVE LIDT HJÆLP :-) var thisDay = parseInt(document.frmUser.elements["Date_Day" + (intSelects - 1)].value) + 7; var thisMonth = new Date().getMonth(); // mangler at gå til næste måned, hvis det er relevant var thisYear = new Date().getFullYear(); // mangler at gå til næste år, hvis det er relevant }
var dash = document.createTextNode(" "); var mother = document.getElementById('motherDiv'); var newSel = document.createElement("SELECT"); newSel.size = '1'; newSel.className = 'inputbox'; newSel.name = 'Date_Day' + intSelects; newSel.id = 'Date_Day' + intSelects; mother.appendChild(newSel);
for(i=1;32>i;i++){ newSel.options[newSel.length] = new Option(i, i); }
var mName = ['januar','februar','marts','april','maj','juni','juli','august','september','oktober','november','december']; for(i=1;12>i;i++){ newSel.options[newSel.length] = new Option(mName[i],i); }
-- arh, du vil bare skifte selected, så det er den næste måned !-)
<script type="text/javascript">
var intSelects = 0;
function appendSelect(){ var today = new Date(); intSelects++;
var actDate = new Date(today.getFullYear(),today.getMonth(),today.getDate()+(7*(intSelects-1))); var thisDay = actDate.getDate(); var thisMonth = actDate.getMonth(); var thisYear = actDate.getFullYear();
//og så videre med var dash //osv.
-- du skal nok, for at synkronisere månedsnumre og nave, så gøre:
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); }
-- som du vil opdage er javascripts Date-objekt utroligt tilgivende, og accepterer uden problemer, at du f.eks. opretter den 16. gruppe med new Date(2005,6,123), altså d. 123. juli 2005, hvilket den bare oversætter til 31. oktober 2005 !-)
Ser ud til at funge nogen lunde, dog hopper den fra nov til jan og kommer også med en fejl. Den er ikke glad for dec, det er ellers så hyggelig en måned.
Hvis jeg fjener -1 i selectedIndex, så er den en dag for høj.
Jeg smider lige min kode:
<script type="text/javascript">
var intSelects = 0;
function appendSelect(){
var today = new Date(); intSelects++;
var actDate = new Date(today.getFullYear(),today.getMonth(),today.getDate()+(7*(intSelects-1))); var thisDay = actDate.getDate(); var thisMonth = actDate.getMonth(); var thisYear = actDate.getFullYear();
var dash = document.createTextNode(" "); var mother = document.getElementById('motherDiv'); var newSel = document.createElement("SELECT"); newSel.size = '1'; newSel.className = 'inputbox'; newSel.name = 'Date_Day' + intSelects; newSel.id = 'Date_Day' + intSelects; mother.appendChild(newSel);
for(i=1;32>i;i++){ newSel.options[newSel.length] = new Option(i, i); }
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); }
Jeg forstår ikke følgende. Hvis jeg vælger en anden dato i den sidste dropdown-box og beder systemet om at komme med et nyt sæt dropdown-boxene (baseret ud fra den valgte dato, dog en uge længere frem), så kommer den oprindelige dato (som stod i box'en plusset med en uge).
Derved ignorer den at man har valgt en anden dato... he he nu forstår jeg det, det er fordi at min linie:
Er blevet udfastet i dit ellers så gode script, som nu hedder:
var actDate = new Date(today.getFullYear(),today.getMonth(),today.getDate()+(7*(intSelects-1)));
Kan du hjælpe mig med at få min kode koblet på igen, fordi den er meget praktisk for dem, som skal springe over en eller flere uger (f.eks. ferieuger) eller hvor et arrangement skal tage en ny sæson "et andet sted i kalenderen".
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); }
Dog forstår jeg ikke, hvordan man opretter checkbox-elementet i DOM, hvor det er afkrydset fra start af. Elementet er godt nok oprettet, dog ikke afkrydset:
Jamen, hej igen. Der var vist noget, der ikke gik helt op for dig i det andet spørgsmål, hvorfor jeg må prøve igen ... og denne gang vil jeg godt bede dig teste de eksempler, jeg skriver ;o)
Så let er det desværre ikke at rode med form-elementer i DOM :o|
IE har en elendig håndtering af DOM og kan ikke med DOM sætte en name-attribute på et element, oprettet via DOM. Prøv f.eks. dette script:
<script type="text/JavaScript"> window.onload = function() { var sel = document.createElement("select"); sel.name = "gnu"; document.body.appendChild(sel); alert(document.body.innerHTML) } </script>
- end ikke dette kan IE klare:
<script type="text/JavaScript"> window.onload = function() { var sel = document.createElement("select"); sel.setAttribute("name", "gnu"); document.body.appendChild(sel); alert(document.body.innerHTML) } </script>
Du er nødt til at lave et browsercheck - og hvis det er en IE, må du skrive:
<script type="text/JavaScript"> window.onload = function() { var sel = document.createElement("<select name=\"gnu\"></select>"); document.body.appendChild(sel); alert(document.body.innerHTML) } </script>
Husk i øvrigt, at tag-navnet bør skrives med småt i createElement ;o)
IE sætter simpethen ikke en name-attribut på et input-element, når man bruger document.createElement på den standardiserede måde. Hvis du skal bruge dine name-attributter til noget, er det med andre ord ret væsentligt, du finder en anden approach.
Jeg kan i princippet være rystende ligeglad ... men det kan du nok ikke, da dine IE-brugere absolut ikke er det ;o)
*LooOooOooL* det er vist spildte ord på BalleLars, det her :D
Nej, det virker ikke fint ... dit element har ikke en name-attribute. IE har fejl, men det nytter ikke, du bygger videre på dens fejl ... f.eks. at den har svært ved at finde rundt i ID og NAME ;o)
En X-browser løsning ville være noget à la:
<script type="text/JavaScript"> function insInput(myName) { var ie, ua = navigator.userAgent.toLowerCase(); ie = (ua.indexOf("msie")!=-1&&ua.indexOf("opera")==-1&&ua.indexOf("konqueror")==-1); var inp = document.createElement( (ie? "<input type=\"text\" name=\""+myName+"\">":"input") ); inp.name = myName; document.getElementById("hest").appendChild(inp); }
Dit udmærkede script, som kører upåklageligt i begge browsere, er indstillet til at plusse en uge, men hvordan udbygget jeg scriptet så den der også kan "plusser med måneder" (altså en måned)?
Når du har indsat svaret, udbygger jeg scriptet, så brugeren kan vælge, om der skal plusse en uge til (som det pt. er) eller om der skal plusses en måned til. Årsagen er, at nogle arrangementer skal gentages hver uge (på en bestemt dag), mens andre arrangementer skal gentages hver måned på en bestemt dag.
Man kan jo desværre ikke bare sige plus 30 dage, fordi månederne ikke er lige lange. Kan du hjælpe her?
var actDate = intSelects==0?new Date():new Date(f.elements["Date_Year"+intSelects].value, f.elements["Date_Month"+intSelects].selectedIndex, f.elements["Date_Day"+intSelects].selectedIndex + EN MÅNED);
Som du måske har opdaget, accepterer javascript en masse underligheder, således også i månedsparameteren, så du kan f.eks. sætte en parameter, som determinerer om det skal være den ene eller den anden, som tælles op, og så derudfra bestemme hvilken af Date-constructorens parametre, som tælles op:
var isMonth = f.elements["isMonth"][1].checked; /* baseret på, at du har to radios med navnet isMonth, hvor den første default er checket for ugentlig gentagelse, mens den anden kan kan checkes, hvis det er månedlig gentagelse */
Takker - kigger på det. Tilbage til måned-plusningen. Hos mig hopper den en måned frem, så d. 19. okt. 2005 bliver til d. 19. nov. 2005. Dog er d. 19. okt. en onsdag, mens den 19. nov. er en lørdag.
Den skulle gerne ramme den samme dag. Den første mandag i hver måned.
Næh, men den gør jo præcis hvad du har bedt den om, altså må du bede den om noget andet, og hvad er så det ?-)
-- den næste måneds 3. onsdag eller den onsdag, som i næste måned ligger tættest på ?o]
-- den kan ikke knækkes med logik, som holder under alle omstændigheder, man kan kun sætte den lige i nærheden, f.eks. optræder der jo engang imellem helligdage på en torsdag, skal den så springes over (eller aftenen før ?-) og hvis den skal, skal den så rykkes frem eller tilbage ...
-- så bliver det ikke een dobbelt radio-button, men 36, som skal indstilles !-)
Det er ikke nok, for hvis I normalt holder møder i Akvarieklubben 'Fiskene drikker også' den 4. onsdag aften i måneden, men ikke gør det i påskeugen, da de fleste medlemmer alligevel er i sommerhus, samt den 22. og 23. december, hvordan skal man så ændre den anbefalede/default angivne dato ?-)
- man kan sætte event-handlers på elementet, så snart det er skabt - altså gerne før append. Det kan man faktisk med alle egenskaber - men man må naturligvis vente med at aflæse visuelle egenskaber som offsetWidth. Den slags giver først mening, når elementet er gjort til en del af siden :)
Roenving - du har ret med måned-problematikken. Jeg har derfor lavet mit system om, så man kan vælge at plusse en uge eller fire uger og så må folk selv gå nogle dage længere frem, hvis de finder det relevant.
Men jeg har stadig ikke fået min onClick-event til at virke på check-element:
<script type="text/javascript">
var intSelects = 0;
function appendSelect(f){
if (intSelects == 0) { var isMonth = false; } else { var isMonth = f.elements["isMonth"][1].checked; }
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); }
Du laver et element med: var newElement = document.createElement("TAG_NAME");
Attributter kan du altid sætte med: newElement.setAttribute("ATTRIBUTE_NAME", "ATTRIBUTE_VALUE");
Tekst fylder du i elementet med: var txt = document.createTextNode("EN_TEKST"); newElement.appendChild(txt);
Derefter klistrer du det nye element ind i det element, det skal ligge i: ELEMENT.appendChild(newElement);
Altså laver du først et table-element. I det lægger du et tbody-element. I det lægger du et tr-element. I det lægger du et td-element, som du fylder tekst i. Den sidste operation foretager du to gange mere. table-elementet klistrer du ind i det element, det skal ligge i.
Kik evt. i de andre DOM-eksempler i tråden her. Du skal jo lære det på et tidspunkt ... en regnvejrsdag er vel ikke det værste ;o)
Så skal du lidt længere rundt, da td-tags er børn af tr-tags, som er børn af tbody, som er barn af table-taggget, altså skal du først oprette table-elementet, derefter tbody-elementet og appende det til table-elementet, oprette et tr-element, som appendes til tbody-elementet, og til sidst oprette 3 td-elementer, som appendes til tr-elementet !-)
- her kommer så i øvrigt en lille rettelse til, hvad roenving skrev tidligere om attributter og små bogstaver: I den HTML bør alle attributter skrives med småt - hvilket også gælder event-handlers.
Når man scripter disse attributter, skal de nogen gange skrives i 'camelCase' for at virke. Et eksempel er: td = document.createElement("td"); td.colspan = 2; - hvilket ikke vil virke. Det vil derimod: td = document.createElement("td"); td.colSpan = 2;
Nu, da du har fat i DOM, er det dog slet ikke måden at sætte attributter på. Til alle attributter - undtagen event-handlers - bør du faktisk bruge setAttribute-metoden :)
Når du sætter event-handlers, bør du - som roenving skrev - _altid_ skrive navnet med småt.
newTD = document.createElement("TD"); //første celle mother.appendChild(newTD); //anden celle mother.appendChild(newTD); //tredje celle mother.appendChild(newTD);
newTD = document.createElement("TD"); //første celle newTR.appendChild(newTD); //anden celle newTR.appendChild(newTD); //tredje celle newTR.appendChild(newTD);
newTD = document.createElement("TD"); //første celle newTR.appendChild(newTD); //anden celle newTR.appendChild(newTD); //tredje celle newTR.appendChild(newTD);
Den store ulempe med DOM er, at man ikke kan se sit output, før alt er tæt på korrekt, og det gør, at man - som jeg - famler i blinde, da jeg intet kan se.
<head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <style type="text/css"> html,body{height:100%;margin:0px;border:0px;padding:0px;} </style> <script type="text/javascript"> function insertTable(){ var mother = document.getElementById('minDiv'); var newTabel = document.createElement("TABLE"); newTabel.style.width = "100%"; newTabel.style.border = "1px solid black"; mother.appendChild(newTabel);
var newTBody = document.createElement("TBODY"); newTabel.appendChild(newTBody);
var newTR = document.createElement("TR"); newTBody.appendChild(newTR);
//første celle var newTD = document.createElement("TD"); newTD.style.height = "35px"; var newTDText = document.createTextNode("Her er en tekst, som ligger i en tabelcelle"); newTD.appendChild(newTDText); newTR.appendChild(newTD); //anden celle newTD = newTD.cloneNode(newTD,true); newTR.appendChild(newTD); //tredje celle newTD = newTD.cloneNode(newTD,true); newTR.appendChild(newTD); } </script> <title>Se forskellen i IE css-fortolkning</title> </head> <body> <div id="minDiv" style="width:500px;height:200px;border:50px solid red;background:blue;margin:0 auto;"> </div> <button onclick="insertTable()">Indsæt tabel</button><br> <button onclick="alert(document.body.innerHTML)">Vis indhold</button> </body> </html>
Bemærk iøvrigt anden-parameteren i cloneNode, som betyder, at alt indhold også klones med, altså behøver vi ikke klone newTDText selvstændigt !-)
-- iøvrigt henviser titlen i eksemplet til, at jeg lige kastede de ekstra ting ind i et eksempel på IEs mærkværdige understøttelse af css, hvis man udelader dtd-linket, så der kan du lige få en oplevelse mere med, hvis du prøver at vise siden efter at have slettet dtd-linket i doctypen !o]
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 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 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 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 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); }
Den modtager kun ét argument: en boolean, der afgør, om evt. child-elementer også skal klones: var newElement = ELEMENT.cloneNode(true); // Eller false, forståes :)
Desuden skal I stadigvæk huske, at tag-navnet i createElement-metoden _skal_ skrives med småt ;o)
Desuden holder løsningen da vist ikke en halv meter ... eller? Det er vel ikke meningen, man kun skal kunne indsætte én tabel?
Du har vist nu problemer, fordi du ikke tog min advarsel alvorlig tidligere i tråden. Hvis du opretter mere end én tabel, vil du have flere elementer med samme ID, men uden name-attributter og ...
1. Det er ikke tilladt 2. Det kan ikke anvendes sammen med JavaScript på klienten 3. Du kan ikke bruge felterne til noget på serveren
DOH, cloneNode havde jeg jo egentlig brugt korrekt først ...
-- der kommer da ikke flere elementer med samme id ...
-- alle form-elementer har forskellige id'er, men det løser selvfølgelig ikke problematiken med den server-site behandling, men det kan i hvert fald brruges client-side ...
--og *lol*, axkris afviste jo netop bekymringen i første omgang, for først skulle han lige have fod på oprettelsen client-side, men det kommer jo nok tilbage på et tidspunkt !-)
Sorry ... ingen ulovlige ID'er ... my bad :) Ja, det ville nok have været bedst at få styr på klientsiden først, så - men det er nok et spørgsmål om definitionen af 'styr på' ;o)
- men ville man mon ikke spare en bunke kode, hvis man oprettede en tabel som den ønskede med style="display:none"? Så kunne man klone hele den og skifte et par navne ud - og klistre den ind i div'et.
Større DOM-opbygninger kan let løbe op i meget store kodemængder. Her er det som oftest en kæmpe fordel at lave en simpel template-løsning :)
Om det er tilladt eller ej er jeg lidt ligeglad med, hvis bare det kører i begge browsere - IE og Firefox - og det gør det. Og jeg er ikke spor bekymret vedr. dom-name-tingen failer i IE (og man derfor ikke kan hente værdierne fra server-siden), fordi jeg samler bare dato-værdierne ind i som en hidden-value, som er ikke er DOM-skabt, og så burde det være løst. Hvis ikke det er det, så er der så mange andre muligheder at løse det på.
Mht. små bogstaver, som kræves ved den kommende html-standard, så er jeg også lidt lige glad med det, fordi browseren jo altid er voldsomt bagudkombatible. Og skulle det en dag ikke længere være det, så sætter jeg med gerne ned, at fornyer de steder i min kode, som er forældede. Til den tid har jeg sikkert skiftet hele scriptet ud alligevel.
- det med små bogstaver gælder nu ikke bare i kommende HTML-standarder, men i de allerede gældende ... men hvis intet andet betyder noget, så gør det sikkert heller ikke :)
Alt kører, som det skal, men jeg kan ikke få gang i onClick-events, som jeg tidligere har været inde på. Jeg har prøvet alle mulige og umulige kommandoer og kombinationer og jeg har prøvet at finde noget dokumentation om det på nettet, men intet er lykkedes.
Så onEvents virker stadig ikke for mig. Jeg kigger videre på nettet efter et eksempel.
Det er ikke uden grund, du gang på gang bliver opfordret til at skrive ordentlig kode ... og det er ikke uden grund, at både roenving og jeg tidligere i tråden begge understregede vigtigheden af, at skrive event-handlers med småt ... like it or not ;o) newCheck.onclick = function() { alert("Test 1 2 3") };
Nu bliver jeg helt nysgerrig. Hvorfor beslutter "man", efter at have accepteret store bogstaver i så lang tid, at man ikke længere vil anvende dem i DOM og i kommende html-standarder?
Ved I hvordan man indsætter en værdi af en streng som et paramenter og ikke blot en reference til den (strengen)?
Problemet ligger i:
newSel.onclick = function () { updateDayName(intSelects); }
hvor der indsættes en reference (til intSelects) og ikke selv værdien (af intSelects), som den var, da elementet blev appended. Og derved udskriver den fejlagten tællerens værdi og ikke væriden, som hver sæt af dropdown-boxene har fået tildelt.
Så hvordan tvinger man den til at indskrive værdien (i stedet for referencen)?
Jeg har jo mere lyst til at spørge: Hvorfor i alverden skal der dog gå _så_ ufattelig lang tid, før folk finder ud af, hvad der har været gældende standard i årevis? I betragtning af, hvor stædigt du hele tråden igennem har nægtet at skrive tidssvarende kode, kan jeg vel egentlig ikke finde en bedre at spørge ;o)
I 1895 kunne enhver, der kunne håndtere en knibtang, nedsætte sig som tandlæge. I 1995 kunne enhver, der kunne håndtere Notepad, nedsætte sig som websmed. I 2005 har begge dele udviklet sig til 'fuldvoksne' fag, der ikke længere kan bestrides af enhver ... og det er vel den måde, de fleste fag bliver til og udvikler sig på.
Man kender det i øvrigt også fra andre, 'rigtige' sprog. Da mine forældre var børn, lærte de at skrive 'd' i 'ville' og 'skulle' ('vilde' og 'skulde'). Da jeg var barn, skulle vi skrive 'd' i 'væske' ('vædske') - da det jo kommer af 'væde' ... og det hed 'roastbeef' og 'mayonaise', hvor man i dag må skrive 'rostbøf' og 'majonæse'.
Den eneste forskel er, at web-sprogene bliver mere stringente - hvorimod dansk bliver mere sloppy. Er man rimeligt god til 'rigtige' sprog, er det en kæmpe fordel med mange af de 'gamle', danske stavemåder, da men let kan regne ud, hvor et ord kommer fra - hvordan det staves - og hvad det præcist betyder. Stringens forøger et sprogs logik væsentligt.
Et 'rigtigt' sprog bør naturligvis kunne håndteres af alle borgere - også de mest sprogretarderede - hvorfor det desværre bevæger sig imod, at man staver ord, som de udtales ... men samtidig mister vi sammenhæng i sproget.
Et websprog er der derimod ikke længere grund til, alle kan mestre. HTML blev født som et hamrende simpelt paragraf- og tabelværk til opstilling af videnskabelige måledata. Det samme kan idag gøres med CMS'er - og det egentlige udviklings- og kodearbejde kan overlades til dygtige fagfolk, der kan deres fag ... samtidig med, sprogene kan forfines og semantik/syntaks gøres mere robust.
- damned ...!!! Endnu en rød streg på skærmen :o| Du har da fuldstændig ret, roenving. Hvad var det, jeg skrev? Bare der er logik i sproget ... *LooOooL*
Der er nok en årsag eller fem til, at jeg koder - og ikke skriver lyrik. Selv i et liv som mit er der zq nok alligevel rudimenter af sammenhæng ;D
Men indrøm det ;-) det er den en mindre pæn måde at kode på at lave sådanne tempvariabler :-) Men det skal jo i mit tilfælde passe til programmørens resterende koder ;-)
Apropros små bogstaver, så sætter jeg mig ni ned og får kodet dem om.
Kan du ikke bringe mig nogle eksempler fra min kode, hvor jeg bør skrive dem med små bogstaver? Bare så jeg ikke får kodet alt for meget med med små bogstaver.
<script type="text/javascript">
var intSelects = 0;
function appendSelect(f){
var isMonth = intSelects==0?false:f.elements["isMonth"][1].checked; var actDate = intSelects==0?new Date():new Date(f.elements["Date_Year"+intSelects].value, f.elements["Date_Month"+intSelects].selectedIndex, f.elements["Date_Day"+intSelects].selectedIndex + (isMonth?29:8));
var thisDay = actDate.getDate(); var thisMonth = actDate.getMonth(); var thisYear = actDate.getFullYear();
var thisDayName = getDayName(actDate);
intSelects++;
var dash = document.createTextNode(" "); var mother = document.getElementById('motherDiv');
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); }
Det er _kun_ onclick i ovenstående kode som er indeholdt i den betragtning !-)
-- resten af de ting du bruger er indeholdt i javascript-DOM-binding og er derfor javascript-properties, så du må ikke ændre f.eks. selectedIndex og className !o]
createTextNode, appendChild, cloneNode, getElementById samt getDate, getMonth og getFullYear for lige at komplettere listen over de metoder, som skal bruge præcis den kombination af små og store bogstaver
Og så har jeg lige et spg til :-) Hvordan opdaterer jeg navnet for ugedagen, når brugeren vælger en anden dato i mit div ud for den det sæt af dropdown-boxene, som brugeren har ændret på?
P.t. tilføjer den blot dagen f.eks. "mandag" til (den sidste ankomne) div, hvor der i forvejen f.eks. står "tirsdag", så der kommer til at stå "tirsdagmandag", og det dur ikke (og specielt ikke, når det er en af de ovenstående sæt af dropdown-boxene, som man har ændret på). Den skulle overskrive værdien, så der kom til at så "mandag" ud for den dropdown, som brugeren har ændret. Altså efter samme princip, som i innerHTML.
Kan I hjælpe? Der er check onEvents mv. så det er kun DOM-delen, som I skal hjælpe mig med.
Kan man sige noget ala: newDiv[den rigtige].updateChild(divTxt); og hvor får man den til at ramme det rigtige div? Altså det div, som står ud for det ændrede sæt dropdown-boxe?
Hvis man kunne sige, så have det løst det. Kan du hjælpe?
newDiv-tingene eksisterer ikke udenfor den funktion, hvor du opretter dem, hvis du ikke sørger for at lave globale variable, hvilket absolut ikke er hensigtsmæssig i dette tilfælde ...
-- så du skal nok finde en måde at finde deres nummer (altså den værdi af intSelects, som er brugt ved oprettelse !-)
-- og så skal du finde elementet vha dets id:
document.getElementById('day_name' + num]. osv.
-- vil det forøvrigt ikke være en fordel at oprette en/flere ny(e) tråd(e), så vi ikke kløjs i denne tråds umådelige længde (indtil nu 124 indlæg ?-)
Jo, slukker og lukker for denne tråde. Jeg valgte at fortsætte i den, da der kom en hel stribe begynder-agtige spg. til DOM. Men jeg kører med flere tråde nu :-) Nu har jeg også lidt bedre check på det med DOM... lidt ;-)
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.