16. december 2006 - 21:10Der er
16 kommentarer og 1 løsning
ændrede data skrives ikke til html koden
Hejsa.
Olebole hjalp mig med følgende script:
function myMove(elm, dir) { var newElm, aDivs, cont=gE("cont"); elm = findParObj(elm, "DIV"); newElm = elm.cloneNode(true); aDivs = gA(cont, "DIV"); if (dir=="up") { for ( i=1; i<aDivs.length; i++ ) { if ( aDivs[i]==elm ) { cont.removeChild(elm); cont.insertBefore(newElm, gA(cont, "DIV")[i-1]); } } } else if (dir=="down") { for ( i=1; i<aDivs.length; i++ ) { if ( aDivs[i-1]==elm ) { cont.removeChild(elm); if (aDivs.length>i) { cont.insertBefore(newElm, gA(cont, "DIV")[i]); } else { cont.appendChild(newElm); } break; } } } if (navigator.userAgent.toLowerCase().indexOf("opera")==-1) cont.innerHTML = cont.innerHTML + ""; calc_all(); }
Men hvis jeg kigger i html koden så er der ikke noget der ændrer sig der.. og calc_all(); bruger tydeligvis kun det som den har i html koden.
Skriver cloneNode f.eks. ikke i htmlfilen eller hvordan skal jeg kunne få mine kalkulering til at fungere efter en flytning? var d=document; function gE(id){return d.getElementById(id)} function gA(o,tag){return o.getElementsByTagName(tag)}
function calc_time(n,m) { if (n==0) { var t1 = d.getElementById('start_time'+[n]).value; } else if (n>0) { var t1 = d.getElementById('real_time'+[n-1]).value; }
var t2 = d.getElementById('nom_time'+[n]).value;
if (n==0) { var t3 = d.getElementById('trans_time'+[n]).value="00:00"; } else if (n>0) { var t3 = d.getElementById('trans_time'+[n]).value; }
Midlerne er skam gode nok. Når du løber igennem med getElementById eller getElementsByTagName, så får du også dem du har oprettet. Så vidt jeg husker, uden at have prøvet din kode, så vil især IE ikke altid lave korrekte kloner, så måske er det eneste du mangler at sætte className efter kloning. Eller prøv en anden browser. Ellers prøv at se hvad din for-løkke til sidst rent faktisk får fat i.
Nogen resoneren frem og tilbage i mit lille hoved siger mig at det måske ikke er flytningen men mere calc_all funktionen der er noget galt med.. hvorfor ved jeg ikke helt men ... eller nej, når jeg starter uden at have flyttet noget rundt så beregner den fint og rigtigt. damn .. jeg river totter af mit hovede over denne..
så når der er flyttet rundt så vil calc_time stadig kunne få fat i de rigtige ting med var t1 = d.getElementById('start_time'+[n]).value; Jeg skal ikke have inpts[j] med i kaldet inpts[j].value = calc_time(i);
blev tilføjet i calc_time og uanset hvad jeg gør så er t1 = f.eks. start_time0 (rigtigt) men værdien er 12:00 uanset hvad jeg flytter rundt på. Så det er som om at værdierne ikke bliver flyttet helt med
hvis jeg skriver noget ala alert(cont); så får jeg en temmelig stor alertbox op med al htmlkode mellem <div id='cont'></div> aDivs = gA(cont, "DIV"); refererer tydeligvis på divs som er imellem cont-diven. Men hvordan kan jeg referere til dette data. Jeg har prøvet cont.getElementById('start_time'+[i]) og aDivs.id (som giver mig ID_[0-2] som jo er id på de divs som er imellem <div id='cont'></div> Jeg ville jo gerne kunne f.eks. aDivs.start_time[0] eller aDivs.getElementById(start_time+[i]) men det vil den ikke lade mig.. giver fejl omkring objektet ikke understøtter denne form (eller noget der ligner..)
Hjæææææælp.. (pt er jeg vist mere træt i hjernen end som så.. ) - skulle jeg ikke natte nu.. og se hvad næste år byder (o;
Weeeeelll,, kigger man på den kode jeg har lagt i toppen her så er der noget javascripts som jeg benytter mig af .. Jeg fandt ud af - efter jeg "nattede" at problemet ligger i funktionen calc_all. Den henter data fra var inpts, divs = gA(gE("cont"), "DIV");
Som er den "yderste" div. som tydeligvis er den der er skrevet og fortalt i den afleverede htmlside. Det gør myMove osse men den leverer en variabel - cont - som jeg ikke kan tilgå - på grund af ignorance og stupiditet.. - Så mine famlende forsøg går ud på at få smasket den variabel cont over til calc_all (subsidært calc_time)= for at beregne på de data der er i variablen.
Lad mig give eksempel - som jeg ser det:
function myMove(elm, dir) { var newElm, aDivs, cont=gE("cont"); elm = findParObj(elm, "DIV"); newElm = elm.cloneNode(true);
hvor cont = hent alt hvad der står i elementet "cont" i htmldom (går jeg ud fra).
Samme skidt står i calc_all:
var inpts, divs = gA(gE("cont"), "DIV");
Og derfor vil alle beregninger blive lavet på "gamle" data som ikke er blevet flyttet rundt. Så jeg vil gerne have "cont" over til calc_all. No problemo. Variabel:
calc_all(cont);
for derefter i calc_all
inpts[j].value = calc_time(i,cont);
en alert (cont); viser at jeg har fået det hele med.. men hvordan tilgår jeg så lige data i cont fra calc_all eller calc_time? En alert (cont.getElementById('start_time'+[i]); eller andre futile forsøg er alle gået i vasken.
Hvordan jeg skal give et eksempel udover det jeg har gjort i toppen? Jeg vil gerne give hele koden..
Yeha.. fedt.. godt.. glad mand.. skal sg æde mig fed i chokolade nu.. og masser af kaffe.. skal have blodtrykket endnu højere op.. arg.. der faldt det igen..
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.