|
| Eventhandler på flere ens elementer ad Fra : Rune Jensen |
Dato : 30-12-09 00:23 |
|
Jeg er ved at lege med eventhandlere i forbindelse med "diskret
javascript", og er rendt ind i nogle slemme problemer.
Siden
http://www.webdesigngruppen.dk/galleri/thebigpicture.asp?medlem=allan+vebel&year=2009&layout=galleri&id=0
Selve eventhandleren er her, men kan også ses på siden:
addEvents(window,'load',initiate_pile)
.........
.........
function initiate_pile() {
addEvents(document,'keydown',checkArrowKey);
}
function addEvents (eventobject,eventtype,eventfunction) {
if ( eventobject.addEventListener ) {
eventobject.addEventListener (eventtype,eventfunction,false) ;
} else if( eventobject.attachEvent ) {
eventobject.attachEvent ('on'+eventtype,eventfunction) ;
} else {
eventobject['on' + eventtype] = eventfunction ;
}
}
....denne eventhandler, kan jeg sagtens få til at virke, når det handler
om _tastetryk_, og til dels forstår jeg idéen, fordi window giver sig
selv som object i den første, og der er ingen variable til
function initiate_pile().
Men hvad hvis jeg vil tilføje en eventhandler til f.eks. alle textfelter
i en form (bare eksemepel), skal man tilføje disse event handlers via en
for-next, som gennemløber siden og leder efter disse felter?
Hvad er idéen bag hver "variabel" i addEvent-functionen,
eventobject,eventtype,eventfunction helt nøjagtigt? Jeg kender
eventtype, det er nok de to andre, som er problemet..
...for hvordan returneres fra den addEventfunction til den funktion, som
skal behandle eventen (hvilke variable, for for mig at se, returneres
der intet, og det forvirrer mig)?
Min første "opgave", om man så må sige, tænkte jeg bare at gøre det
rimeligt simpelt. F.eks. "Klik på hvilketsomhelst form-text-felt på en
given side, laver en clear af feltet". Ikke specielt avanceret. Sådan
jeg har en idé om, hvordan det fungerer, og sådan der ikke kan opstå for
mange fejl.
Men jeg tror, jeg er nødt til at vide noget mere basic som ovenfor, før
jeg bare kaster mig ud i det.
Jeg håber, det er klart nok formuleret, ellers skal jeg nok prøve at
uddybe, men tag i agt, det er helt nyt for mig at lave diskret
javascript selv ;)
MVH
Rune Jensen
| |
Stig Johansen (30-12-2009)
| Kommentar Fra : Stig Johansen |
Dato : 30-12-09 02:04 |
|
Rune Jensen wrote:
> Hvad er idéen bag hver "variabel" i addEvent-functionen,
> eventobject,eventtype,eventfunction helt nøjagtigt? Jeg kender
> eventtype, det er nok de to andre, som er problemet..
Ja, event typen giver sig selv, for det er det samme som man ville skrive i
html'et med "onclick","onkeydown" osv, blot undlades "on".
Eventobject er det element der skal reagere på eventen.
Eventen svarende til "<body onload.." lægges på window objectet, som du også
har.
Så dette svarer til den her body onload, og kalder funktionen initiate_pile.
I princippet burde man måske kalde den initiate_page, da det først er her vi
kan begynde at operere på selve dokumentet.
Men når dokumentet nu er indlæst kan vi sætte keyboard eventen på _hele_
dokumentet.
Det gør vi så her:
addEvents(document,'keydown',checkArrowKey);
Dvs. funktionen checkArrowKey kaldes for hvert eneste tastetryk uanset hvor
det sker.
Funktionen checkArrowKey tester så på om det er pil eller +/- (uden
ctrl,shift,alt) der er trykket på.
Hver event bliver kaldt med et eventobjekt som parameter (bortset fra IE),
og det er denne, der kan bruges i funktionen.
I onload har jeg ikke defineret den, da der kun er den samme, så det er
ligegyldigt.
> Men hvad hvis jeg vil tilføje en eventhandler til f.eks. alle textfelter
> i en form (bare eksemepel), skal man tilføje disse event handlers via en
> for-next, som gennemløber siden og leder efter disse felter?
Det kommer an på hvad du vil, og hvad der er muligt.
Når en event bliver kaldt, så er der også en target (eller source), som
angiver hvilket element der 'modtager' eventen.
På den måde kan f.eks. nøjes med een click handler på hele dokumenter, for
ved klik er der både x/y koordinater samt hvilket element der er tale om.
> ..for hvordan returneres fra den addEventfunction til den funktion, som
> skal behandle eventen (hvilke variable, for for mig at se, returneres
> der intet, og det forvirrer mig)?
Jeg er ikke helt klar over hvad du mener.
Addevent er en funktion, der en gang for alle fortæller browseren, at når
der f.eks. tastes, så skal checkarrowkey kaldes.
Tænk på det som en slags opsætning.
> Min første "opgave", om man så må sige, tænkte jeg bare at gøre det
> rimeligt simpelt. F.eks. "Klik på hvilketsomhelst form-text-felt på en
> given side, laver en clear af feltet". Ikke specielt avanceret. Sådan
> jeg har en idé om, hvordan det fungerer, og sådan der ikke kan opstå for
> mange fejl.
Her ville jeg nok tage udgangspunkt i focus og blur.
1) Lav en getelementbyid på din <form>
2) Lav derefter en getelementsbytagname på INPUT
dette giver dig en liste med alle inputfelter
3) Loop igennem og test på type="text"
4) for hver af dem, lave en addevents (elementet,'focus',din_focus) samt
addevents (elementet,'blur',din_blur)
5) Lav funktionerne a la:
function min_focus(e) {
ev=eventsource(e);
ev.style.backgroundcolor='red';
ev.value=''; // blanker
}
function min_blur(e) {
ev=eventsource(e);
ev.style.backgroundcolor='white';
}
Vær opmærksom på, at jeg ikke har skrevet rigtigt med store og små
bogstaver.
> Men jeg tror, jeg er nødt til at vide noget mere basic som ovenfor, før
> jeg bare kaster mig ud i det.
Hvis du prøver at lave en lille testform med ovenstående, tror jeg du får en
ide om hvordan det hænger sammen.
--
Med venlig hilsen
Stig Johansen
| |
Stig Johansen (03-01-2010)
| Kommentar Fra : Stig Johansen |
Dato : 03-01-10 10:55 |
|
Stig Johansen wrote:
> Hvis du prøver at lave en lille testform med ovenstående, tror jeg du får
> en ide om hvordan det hænger sammen.
Og uanset om du kan bruge mit indlæg til noget eller ej, er det god karma at
vende tilbage på et tidspunkt.
Nu er der ikke nogen 'svartidsfrist', men nettet er fyldt med ubrugelige
dead-ends med prøv dit, og prøv dat, uden løsninger.
--
Med venlig hilsen
Stig Johansen
| |
Rune Jensen (03-01-2010)
| Kommentar Fra : Rune Jensen |
Dato : 03-01-10 12:01 |
|
Stig Johansen skrev:
> Stig Johansen wrote:
>
>> Hvis du prøver at lave en lille testform med ovenstående, tror jeg du får
>> en ide om hvordan det hænger sammen.
>
> Og uanset om du kan bruge mit indlæg til noget eller ej, er det god karma at
> vende tilbage på et tidspunkt.
>
> Nu er der ikke nogen 'svartidsfrist', men nettet er fyldt med ubrugelige
> dead-ends med prøv dit, og prøv dat, uden løsninger.
Ja, det skal jeg nok, men i mellemtiden er der opstået et 2010-problem,
som jeg har kigget på over et par dage. Jeg slås med inputvalidering
også i den forbindelse. Jeg har rettet galleriet så nogenlunde, så det
virker, men datovalgsiden har stadig nogle underlige fejl. Mærkeligt nok
virker byvalgssiden, den er skåret efter samme pind som datovalgssiden,
så jeg kan bare ikke have testet datovalgssiden godt nok.
Hovedidéen er, at både datovalg og byvalg skal skifte ved nyt år
automatisk. Gallerisiden skal man selv kunne vælge år (selvfølgelig),
men jeg vil også have validering for f.eks. ikke-tal ved årstalsvalg.
Men når det på et tidspunkt virker for to år, burde det virke i
fremtiden også på alle sider. Det er ikke så meget fejlretning, jeg
mangler nu, men jeg skal lige have gennemskuet koden på datovalgssiden.
Jeg er lige blevet færdig med gallerifejlretningen.
MVH
Rune Jensen
| |
Stig Johansen (03-01-2010)
| Kommentar Fra : Stig Johansen |
Dato : 03-01-10 17:08 |
|
Rune Jensen wrote:
> Ja, det skal jeg nok, men i mellemtiden er der opstået et 2010-problem,
> som jeg har kigget på over et par dage.
WTF!
Jeg troede alt det opreklamerede Y2K fis var overstået for 10 år siden, og
nu har vi et 2010 problem?
--
Med venlig hilsen
Stig Johansen
| |
Rune Jensen (03-01-2010)
| Kommentar Fra : Rune Jensen |
Dato : 03-01-10 17:39 |
|
Stig Johansen skrev:
> Rune Jensen wrote:
>
>> Ja, det skal jeg nok, men i mellemtiden er der opstået et 2010-problem,
>> som jeg har kigget på over et par dage.
>
> WTF!
>
> Jeg troede alt det opreklamerede Y2K fis var overstået for 10 år siden, og
> nu har vi et 2010 problem?
Det er fordi, jeg ikke kunne gennemteste helt med kun ét år for hånden.
Ikke fordi det er særligt spændende, men jeg er jo nødt til at tjekke
for, at f.eks. år>now := now og år<2009 := 2009. Samtidig skal jeg
validere for, der ikke kan injectes, og det tjek kunne den i hvert fald
ikke lide, så jeg måtte fuske lidt (første gang, jeg har haft det
problem, må have med datatyper at gøre)...
Det er for så vidt klaret, men så opdagede jeg, at man ikke kan vælge
datoer eller noget, med mindre, man aftjekker "Husk mig", det skal jo
være sådan, man kan bruge siden helt uden cookies (undtagen upload af
billeder til galleri).. Cookien er kun for at huske valg udfra navn -
her skulle bl.a. ændres noget domain, fordi jeg har lavet redirect til
www. Anyways, årene var hardcoded ind i ASPen flere steder som 2009, det
var hovedproblemet. Så kommer man ikke langt i 2010 ;)
Jeg regner med/håber på, det kun lige tager en time med den sidste
fejlretning, nu er jeg på ret spor. Jeg gider ikke sidde og se på
ASP-fejl, det virker ikke proft.
MVH
Rune Jensen
| |
Stig Johansen (04-01-2010)
| Kommentar Fra : Stig Johansen |
Dato : 04-01-10 08:20 |
|
Rune Jensen wrote:
> Anyways, årene var hardcoded ind i ASPen flere steder som 2009, det
> var hovedproblemet. Så kommer man ikke langt i 2010 ;)
Nå, sådan noget script.
Jeg troede det var noget javascript, du var ude i, og derfor kiggede jeg på
din datovalg-side.
Her var der kun 'tablesort', og - undskyld udtrykket - hold da kæft for en
gang bræk fra sidste årtusinde.
En ting er at du bruger det, men jeg synes ikke det er på sin plads at
promovere gammelt skrammel anno 2010, på samme måde, som du nok heller ikke
vil promovere HTML 2.0.
Du skal dog have tak, for det gav mig inspiration til noget jeg havde glemt,
netop at indføre tablesort i mit notes.
Det er jeg så på vej tll, og i den forbindelse har jeg lavet:
1) Quicksort i stedet for bubblesort, da det antages at det generelt er den
hurtigste.
2) Tablesort, som benytter Quicksort der er generel.
> Jeg regner med/håber på, det kun lige tager en time med den sidste
> fejlretning, nu er jeg på ret spor. Jeg gider ikke sidde og se på
> ASP-fejl, det virker ikke proft.
Og jeg gider ikke se på alt det mærkelige/oldnordiske javascript - "det
virker ikke proft."
Det er lidt underligt at man ikke får ryddet op i tingene, men det er nok
tidens trend - "hovsa det virker, så det må vi bruge", og så bygger man
videre i eet stort patchwork(kludetæppe), uden at revurdere eksisterende
kode.
Disse nævnte scripts er naturligvis til fri afbenyttelse, og statisk brug af
dem er sådan set på plads.
I forbindelse med mit notes, er der dog den ekstra udfordring, at alt er
dynamisk, så det skal jeg lige have på plads inden jeg præsenterer
'løsningen'.
--
Med venlig hilsen
Stig Johansen
| |
Stig Johansen (04-01-2010)
| Kommentar Fra : Stig Johansen |
Dato : 04-01-10 12:09 |
|
"Stig Johansen" <wopr.dk@gmaill.com> wrote in message
news:4b419791$0$275$14726298@news.sunsite.dk...
> inden jeg præsenterer
> 'løsningen'.
Man kan vel lave et statisk eksempel...
Jeg håber du tilgiver mig at tage udganfspunkt i din datovalg-side, men der
er nu noget nemmere at 'stjæle' noget data frem for selv at fabrikere det.
I den forbindelse har jeg gemt en kopi at din datovalg side:
http://www.webdesigngruppen.dk/datovalg.asp
her:
http://w-o-p-r.dk/test/datovalg.html
Og problemstillingen er præcis dato/tid sortering, og ikke så meget numre og
strenge.
Jeg roder lidt med noget filler[1] og dato/klokkeslet, men prøv at klikke på
overskriften i de respektive URL'er og se hvad der sker.
[1] FILLER = COBOL udtryk.
--
Med venlig hilsen/Best regards
Stig Johansen
| |
Rune Jensen (04-01-2010)
| Kommentar Fra : Rune Jensen |
Dato : 04-01-10 14:29 |
|
Stig Johansen skrev:
> "Stig Johansen" <wopr.dk@gmaill.com> wrote in message
> news:4b419791$0$275$14726298@news.sunsite.dk...
>> inden jeg præsenterer
>> 'løsningen'.
>
> Man kan vel lave et statisk eksempel...
> her:
> http://w-o-p-r.dk/test/datovalg.html
>
> Og problemstillingen er præcis dato/tid sortering, og ikke så meget numre og
> strenge.
>
> Jeg roder lidt med noget filler[1] og dato/klokkeslet, men prøv at klikke på
> overskriften i de respektive URL'er og se hvad der sker.
Du mener tabelheader? Eller har du lagt det i Notes også? Må undersøges.
> [1] FILLER = COBOL udtryk.
Jeg skal lige bruge lidt tid på at teste. OBS her, at netop med sådan
noget her, der er Opera meget restriktiv, ikke måske så meget med, om
det validerer, men om det er wellformed. Jeg har oplevet det med det
andet script også. Alle andre browsere kan til tider acceptere et
uafsluttet element, eller i forkert hieraki, Opera gør sjældent.
Mit umiddelbare indtryk er, at det er optimeret med en faktor 3 ell.
lign.*) og i så fald er det ret imponerende. Virker det også i IE6+7? Og
kan det selv finde ud af datatypen...? Måske ikke, hvis det er statisk..
Vender tilbage.
MVH
Rune Jensen
*) Koden bag forstår jeg dog overhodet ikke. Så jeg må nok starte med at
kravle..
| |
Stig Johansen (04-01-2010)
| Kommentar Fra : Stig Johansen |
Dato : 04-01-10 19:52 |
|
Rune Jensen wrote:
> Virker det også i IE6+7?
Ja, det virker også i IE6, og min gamle Konqueror.
Den PC jeg havde til installation for en kammerat har jeg måttet aflevere,
så jeg har ikke nyere YE'er mere.
> Og
> kan det selv finde ud af datatypen...?
Nej, datatypen og dato/tidformater angives specifikt sammen med hvilke
kolonner der skal være sorterbare.
EDB og gætterier hører ikke sammen i min verden.
> *) Koden bag forstår jeg dog overhodet ikke. Så jeg må nok starte med at
> kravle..
Det er nok heller ikke den slags kode man skal starte med.
--
Med venlig hilsen
Stig Johansen
| |
Rune Jensen (05-01-2010)
| Kommentar Fra : Rune Jensen |
Dato : 05-01-10 18:54 |
|
Stig Johansen skrev:
> Rune Jensen wrote:
>
>> Virker det også i IE6+7?
>
> Ja, det virker også i IE6, og min gamle Konqueror.
> Den PC jeg havde til installation for en kammerat har jeg måttet aflevere,
> så jeg har ikke nyere YE'er mere.
Så vidt jeg husker, så er der problemer med "mit" script i netop
Konqueror, jeg kan godt huske, vi har snakket om det før, og i den
forbindelse, så lavede jeg nogle tests på bl.a. totalvalidator, som ikke
faldt heldigt ud.
Det afgør så sagen, eftersom dit script er både mere opdateret og mere
crossbrowser. Jeg har indlagt dit script på siden i stedet for det
andet. Det kræver dog lidt tilretning, for der er visse sjove fejl i
Mozilla-browsere, som ikke er på demo-siden, så det kigger jeg på og retter.
Hvis du vil, kan jeg linke til din side. Jeg tænkte, om der er en
speciel side, som kan linkes til.
MVH
Rune Jensen
| |
Stig Johansen (05-01-2010)
| Kommentar Fra : Stig Johansen |
Dato : 05-01-10 23:50 |
|
Rune Jensen wrote:
> Så vidt jeg husker, så er der problemer med "mit" script i netop
> Konqueror, jeg kan godt huske, vi har snakket om det før
Ja, og det var dengang der var tal i.
Jeg husker ikke præcis hvad det var, men det blev ikke sorteret rigtigt,
næemest halvt.
> Mozilla-browsere, som ikke er på demo-siden, så det kigger jeg på og
> retter.
Jeg vil gerne høre hvis der er fejl, men læs mit andet indlæg først.
> Hvis du vil, kan jeg linke til din side. Jeg tænkte, om der er en
> speciel side, som kan linkes til.
Næh, jeg vil hellere have du lægger den på din egen side, og laver en kort
vejledning.
--
Med venlig hilsen
Stig Johansen
| |
Rune Jensen (06-01-2010)
| Kommentar Fra : Rune Jensen |
Dato : 06-01-10 01:04 |
|
Stig Johansen skrev:
> Rune Jensen wrote:
>> Hvis du vil, kan jeg linke til din side. Jeg tænkte, om der er en
>> speciel side, som kan linkes til.
>
> Næh, jeg vil hellere have du lægger den på din egen side, og laver en kort
> vejledning.
Stig, det kan jeg godt, men jeg har nogle forslag:
Du mener webdesigngruppen.dk - for jeg kunne bruge det i forb. med en
scriptsektion?
Jeg har nogle ønsker (og her bliver det så igen on-topic), nemlg at man
kan adskille selve eventhandleren - ifald denne kan bruges generelt. Som
overskriften også antyder, så er jeg selv interesseret i at lave
diskrete scripts, og her skal jo bruges en eventhandler. Idéen er så at
have en "Generelle Scripts-functions"-side, som jeg kan sætte en hel
side sammen af. Altså selve hovedscriptet, som kan variere, og så
eventhandleren, som er generel. Så - er det muligt at adskille
eventhandleren, så denne kan bruges i fremtidige scripts?
Jeg har et yderligere spg. på Gonzales.
Lyder dette OK?
MVH
Rune Jensen
| |
Stig Johansen (06-01-2010)
| Kommentar Fra : Stig Johansen |
Dato : 06-01-10 05:27 |
|
Rune Jensen wrote:
> Du mener webdesigngruppen.dk - for jeg kunne bruge det i forb. med en
> scriptsektion?
Ja.
> Jeg har nogle ønsker (og her bliver det så igen on-topic), nemlg at man
> kan adskille selve eventhandleren - ifald denne kan bruges generelt.
Jeg er ikke helt klar over hvad du mener, jeg synes tingene er skilt ad i
forhold til brugen.
De ting der er helt generelle, og kan bruges alle steder ligger i wopr.js.
Det det håndterer tablesort ligger i en fil for sig selv, og kan bruges til
alle tabeller på alle sider.
Og til sidst har jeg en lille fil med de specifikke ting for netop denne
side.
> Som
> overskriften også antyder, så er jeg selv interesseret i at lave
> diskrete scripts, og her skal jo bruges en eventhandler.
Ja, eller rettere - der skal bruges mindst 2.
Vi skal lige skille tingene ad.
_Registreringen_ af eventhandlers foregår med den generelle addEvents
rutine, og ligger i wopr.js.
Her har vi i første omgang brug for at registrere og _definere_ en
eventhandler på onload ('load').
Det er det sidespecifikke, og ligger i datovalg.js, hvor selve
eventhandleren er funktionen initiate_table.
Det svarer til man laver en <body onload="initiatetable()"..
På den måde får vi igangsat initiering af scripts, når siden er loaded.
initiate_table kalder derefter makesorttable, som er den generelle tablesort
i tablesort filen.
Her bruger jeg id som reference og ikke class, som du nok har bemærket.
På selve tabellen har vi også brug for en onclick ('click') event, der
_registreres_ i makesorttable med tablesortclick som _eventhandler_.
Herefter vil ethvert klik på tabellen udløse et kald til tablesortclick.
tablesortclick undersøger så om der er klikket på en sortable overskrift
jfr. opsætning, og hvis det er tilfældet udføres sorteringen.
> Idéen er så at
> have en "Generelle Scripts-functions"-side, som jeg kan sætte en hel
> side sammen af. Altså selve hovedscriptet, som kan variere, og så
> eventhandleren, som er generel. Så - er det muligt at adskille
> eventhandleren, så denne kan bruges i fremtidige scripts?
Jeg synes stadig det er adskilt.
Hvis jeg skal implementere sorterbare tabeller, så skal jeg bruge:
1) wopr.js, som jeg højst sandsynligt har i forvejen.
2) tablesort.js - siger næsten sig selv.
og til sidst et kald til makesorttable i en onload event handler.
I mit Notes har jeg i forvejen en onload handler, og der tilføjer jeg blot
makesorttable, samt parametre genereret fra ASP, da disse ligge i
databasen.
Så ud fra det kan du se, at det eneste man skal gøre er, at 'include' 2
generelle scripts, samt lave et minimalt 3. script, hvis det ikke i
forvejen er en onload eventhandler man kan bruge.
> Jeg har et yderligere spg. på Gonzales.
Kigger forbi.
--
Med venlig hilsen
Stig Johansen
| |
Rune Jensen (06-01-2010)
| Kommentar Fra : Rune Jensen |
Dato : 06-01-10 07:27 |
|
Stig Johansen skrev:
> De ting der er helt generelle, og kan bruges alle steder ligger i wopr.js.
OK - jeg implementerer koden i siden, sådan som jeg forstår det (skal
lige have et par timer søvn også), men gider du give din kritik - inden
den går i luften, for jeg har muligtvis misforstået et par ting eller
tre igennem læsningen af dine svar ;)
MVH
Rune Jensen
| |
Rune Jensen (05-01-2010)
| Kommentar Fra : Rune Jensen |
Dato : 05-01-10 21:25 |
|
Stig Johansen skrev:
> Rune Jensen wrote:
>
>> Virker det også i IE6+7?
>
> Ja, det virker også i IE6, og min gamle Konqueror.
> Den PC jeg havde til installation for en kammerat har jeg måttet aflevere,
> så jeg har ikke nyere YE'er mere.
>
>> Og
>> kan det selv finde ud af datatypen...?
>
> Nej, datatypen og dato/tidformater angives specifikt sammen med hvilke
> kolonner der skal være sorterbare.
>
> EDB og gætterier hører ikke sammen i min verden.
>
>> *) Koden bag forstår jeg dog overhodet ikke. Så jeg må nok starte med at
>> kravle..
>
> Det er nok heller ikke den slags kode man skal starte med.
Stig, dit script har potentiale. Ikke bare er det kortere, det virker
også i flere browsere end det gamle (så vidt din demo-side), men...
Jeg kan ikke for min død få det implementeret.
Den eneste forskel nu, efter jeg har gennemtjekket din demo og min side,
det er at jeg har lagt al kode i én fil. Kan det gøre en forskel?
Nu er det på test-stadiet, og som sagt, er det for kompliceret til mig,
så hvad jeg har gjort for at få det hele i én fil, det er at kopiere fra
dine JS-filer i rækkefølge ind i ét JS-dokument.
Dette virker i IE8, og det virker i Opera(?), men ikke i andre browsere.
Så jeg er lidt lost.
Har du forslag til, hvad problemet kan være? Man kan ikke bare lægge det
hele i én fil...?
MVH
Rune Jensen
| |
Stig Johansen (06-01-2010)
| Kommentar Fra : Stig Johansen |
Dato : 06-01-10 00:01 |
|
Rune Jensen wrote:
> Jeg kan ikke for min død få det implementeret.
Du har heller ikke fået nogen 'vejledning'.
> Den eneste forskel nu, efter jeg har gennemtjekket din demo og min side,
> det er at jeg har lagt al kode i én fil. Kan det gøre en forskel?
Nej, men der er en anden forskel.
Jeg ved godt man tror, at whitespace er ligegyldigt, men det er det ikke.
De genererer nemlig ekstra (overflødige) #text nodes, der indgår i f.eks.
childNodes.
Af hensyn til strukturen _skal_ overskrifterne ligge i en thead, og det har
du også gjort.
Under thead finder jeg den første <tr>, som benyttes til sorteringen.
Men da der kan være både th og td, bruger jeg bruttolisten childNodes til at
indsætte sorteringen.
Her må der ikke være ekstra textnodes, da tælleren dermed går i udu.
Så fjern whitespace mellem <tr> og <th> oppe i thead sektionen.
Fejlen (i FF) siger "cells[i] has no style", og det er også korrekt, da det
er en #text node den finder.
Det ser ud til at browsere selv genererer en tbody, men jeg vil nok foreslå
at man angiver den alligevel.
> Nu er det på test-stadiet, og som sagt, er det for kompliceret til mig,
> så hvad jeg har gjort for at få det hele i én fil, det er at kopiere fra
> dine JS-filer i rækkefølge ind i ét JS-dokument.
Det er principielt ligegyldigt om det ligger i een fil eller flere.
Jeg har delt det i 3, da:
Quicksort/+A( er generelle rutiner, og ikke kun til table sort.
Tablesort, der er generel for tabeller på alle sider.
En specifik fil til denne side med parametre.
> Har du forslag til, hvad problemet kan være? Man kan ikke bare lægge det
> hele i én fil...?
Se ovenfor.
--
Med venlig hilsen
Stig Johansen
| |
Rune Jensen (06-01-2010)
| Kommentar Fra : Rune Jensen |
Dato : 06-01-10 01:14 |
|
Stig Johansen skrev:
> Rune Jensen wrote:
>
>> Jeg kan ikke for min død få det implementeret.
>
> Du har heller ikke fået nogen 'vejledning'.
Jeg kan prøve at tyde, hvad du skriver i din lille remark i JSen ;)
Men har du noget ved hånden, så kom endelig med det.
>> Den eneste forskel nu, efter jeg har gennemtjekket din demo og min side,
>> det er at jeg har lagt al kode i én fil. Kan det gøre en forskel?
>
> Nej, men der er en anden forskel.
> Jeg ved godt man tror, at whitespace er ligegyldigt, men det er det ikke.
Doh! Det har du sgida skrevet før??
Men jeg ville _aldrig_ have gættet, at det kunne skabe problemer ;)
> De genererer nemlig ekstra (overflødige) #text nodes, der indgår i f.eks.
> childNodes.
Jeps.
> Af hensyn til strukturen _skal_ overskrifterne ligge i en thead, og det har
> du også gjort.
>
> Under thead finder jeg den første <tr>, som benyttes til sorteringen.
> Men da der kan være både th og td, bruger jeg bruttolisten childNodes til at
> indsætte sorteringen.
> Her må der ikke være ekstra textnodes, da tælleren dermed går i udu.
> Så fjern whitespace mellem <tr> og <th> oppe i thead sektionen.
>
> Fejlen (i FF) siger "cells[i] has no style", og det er også korrekt, da det
> er en #text node den finder.
Jeg fandt også den fejl i Web Developer, men jeg kunne bare ikke tyde
scriptet. Jeg troede, det var en CSS-fejl ;)
> Det ser ud til at browsere selv genererer en tbody, men jeg vil nok foreslå
> at man angiver den alligevel.
Dette er interessant viden, og det skal måske med i "Hvad kan gå galt"
eller lign.
Tak for svar, Stig.
Nu er der en del arbejde at gøre, jeg skal bl.a. have gennemlæst dine
svar mere grundigt, men jeg vender tilbage, enten på Gonxales eller her,
altefter om det (kan have) public interest eller ej.
Når vi er enige om hvor det skal sættes op, laver jeg en (test)side.
MVH
Rune Jensen
| |
Rune Jensen (06-01-2010)
| Kommentar Fra : Rune Jensen |
Dato : 06-01-10 02:25 |
|
Rune Jensen skrev:
> Stig Johansen skrev:
>> Rune Jensen wrote:
>>
>>> Jeg kan ikke for min død få det implementeret.
>>
>> Du har heller ikke fået nogen 'vejledning'.
>
> Jeg kan prøve at tyde, hvad du skriver i din lille remark i JSen ;)
>
> Men har du noget ved hånden, så kom endelig med det.
Jo, et spørgsmål:
filleren - hvordan defineres den, eller beskrivelsen af den?
Det er den, som sørger for at sprine over "lø " i tablesorten til
datoen? Altså den springer over whitespaces også? Det må den jo næsten
gøre... er det rigtigt forstået?
MVH
Rune Jensen
| |
Stig Johansen (06-01-2010)
| Kommentar Fra : Stig Johansen |
Dato : 06-01-10 05:01 |
|
Rune Jensen wrote:
> filleren - hvordan defineres den, eller beskrivelsen af den?
>
> Det er den, som sørger for at sprine over "lø " i tablesorten til
> datoen? Altså den springer over whitespaces også? Det må den jo næsten
> gøre... er det rigtigt forstået?
Ja.
Jeg opererer med streng(s),tal(n) og dato/tid.
Hvis det er dato/tid, laves et array ud fra ' ', så i dit tilfælde vil det
være
0: lø
1: datoen
filleren (f) spinger lige så mange elementer over som der er f'er
Så hvis du havde lavet f.eke.
'lø den dd-mm-yy'
bruges ffdmy-
--
Med venlig hilsen
Stig Johansen
| |
Rune Jensen (06-01-2010)
| Kommentar Fra : Rune Jensen |
Dato : 06-01-10 13:50 |
|
Stig Johansen skrev:
> Rune Jensen wrote:
>
>> filleren - hvordan defineres den, eller beskrivelsen af den?
>>
>> Det er den, som sørger for at sprine over "lø " i tablesorten til
>> datoen? Altså den springer over whitespaces også? Det må den jo næsten
>> gøre... er det rigtigt forstået?
>
> Ja.
> Jeg opererer med streng(s),tal(n) og dato/tid.
> Hvis det er dato/tid, laves et array ud fra ' ', så i dit tilfælde vil det
> være
> 0: lø
> 1: datoen
> filleren (f) spinger lige så mange elementer over som der er f'er
> Så hvis du havde lavet f.eke.
> 'lø den dd-mm-yy'
> bruges ffdmy-
Jeg er næsten færdig, jeg mangler to ting, nemlig en ASP-funtion til at
hente scriptsne og lave dem HTML-sikre, så de kan listes som kode på
siden, og så en forklaring til parametrene.
Det skal nok gå, men...
Jeg har et lille spørgmål:
Hvad hvis nu man IKKE vil sortere på en enkelt kolonne...? Så skal man
bruge NULL eller?
MVH og, ja det er sguda et flot script, må jeg sige ;)
Rune Jensen
| |
Stig Johansen (06-01-2010)
| Kommentar Fra : Stig Johansen |
Dato : 06-01-10 17:36 |
|
Rune Jensen wrote:
> Hvad hvis nu man IKKE vil sortere på en enkelt kolonne...? Så skal man
> bruge NULL eller?
Ja, det er tanken, men jeg må indrømme, at jeg ikke har testet det.
Laver lige en test på et notes view....
--
Med venlig hilsen
Stig Johansen
| |
Stig Johansen (06-01-2010)
| Kommentar Fra : Stig Johansen |
Dato : 06-01-10 17:42 |
|
Stig Johansen wrote:
> Rune Jensen wrote:
>
>> Hvad hvis nu man IKKE vil sortere på en enkelt kolonne...? Så skal man
>> bruge NULL eller?
>
> Ja, det er tanken, men jeg må indrømme, at jeg ikke har testet det.
> Laver lige en test på et notes view....
Jo, det virker her, men jeg opdagede noget andet - case sensitivt...
Jeg tror jeg indfører en 's' og 'S' så man kan bestemme om det skal være med
eller uden case sensitivt - stay tuned...
--
Med venlig hilsen
Stig Johansen
| |
Stig Johansen (06-01-2010)
| Kommentar Fra : Stig Johansen |
Dato : 06-01-10 17:48 |
|
Stig Johansen wrote:
> Jeg tror jeg indfører en 's' og 'S' så man kan bestemme om det skal være
> med eller uden case sensitivt - stay tuned...
Det er nu lavet så 's' er case insensitive, og 'S' er case sensitive - du
ved hvor du kan finde ændringen.
--
Med venlig hilsen
Stig Johansen
| |
Rune Jensen (06-01-2010)
| Kommentar Fra : Rune Jensen |
Dato : 06-01-10 18:35 |
|
Stig Johansen skrev:
> Stig Johansen wrote:
>
>> Jeg tror jeg indfører en 's' og 'S' så man kan bestemme om det skal være
>> med eller uden case sensitivt - stay tuned...
>
> Det er nu lavet så 's' er case insensitive, og 'S' er case sensitive - du
> ved hvor du kan finde ændringen.
>
OK. Nu har man jo selvfølgelig lavet det, så output opdateres automatisk
med nye filer, he.
MVH
Rune Jensen
| |
Stig Johansen (04-01-2010)
| Kommentar Fra : Stig Johansen |
Dato : 04-01-10 22:26 |
|
Rune Jensen wrote:
> Stig Johansen skrev:
>> Jeg roder lidt med noget filler[1] og dato/klokkeslet, men prøv at klikke
>> på overskriften i de respektive URL'er og se hvad der sker.
>
> Du mener tabelheader?
Jeg skulle nok være mere præcis.
Det jeg mente var, at din dato sortering ikke virker, og jeg ved heller ikke
om du kan få den til det med dit script.
Hvordan skulle den kunne finde ud af om det er M/D/Y eller D-M-Y eller Y-M-D
eller ?
Nu om dage bruger man sikkert 4 cifrede årstal, men hvilken dato er denne:
01-02-03 ?
> Eller har du lagt det i Notes også?
Ja, nu har jeg.
Men tablesort angives under oprettelse af et view, som er et nyt felt, så
det virker ikke 'automagisk' på eksisterende views.
--
Med venlig hilsen
Stig Johansen
| |
Stig Johansen (05-01-2010)
| Kommentar Fra : Stig Johansen |
Dato : 05-01-10 08:41 |
|
Rune Jensen wrote:
> Virker det også i IE6+7?
Kald mig machocist, men jeg syntes lige jeg ville prøve i min vanilla win2K
med IE5.0.
Og her virker både eventhandlers og sortering ganske udmærket.
Så vi må konkludere, at styringen af events i dit script som _minimum_ er
*før* IE5, uagtet der står noget om 2007 i kommentarerne.
--
Med venlig hilsen
Stig Johansen
| |
Rune Jensen (04-01-2010)
| Kommentar Fra : Rune Jensen |
Dato : 04-01-10 14:07 |
|
Stig Johansen skrev:
> Rune Jensen wrote:
>> Anyways, årene var hardcoded ind i ASPen flere steder som 2009, det
>> var hovedproblemet. Så kommer man ikke langt i 2010 ;)
>
> Nå, sådan noget script.
> Jeg troede det var noget javascript, du var ude i, og derfor kiggede jeg på
> din datovalg-side.
Nej. Det var flere subscript out of range eller file not found, fordi
der var hardcoded årstal ind i bl.a. filnavne i ASPen - hvilket ledte
til en kæde af problewmer (cookie-problemer, login-problemer, problemer
med redirects...)
> Her var der kun 'tablesort', og - undskyld udtrykket - hold da kæft for en
> gang bræk fra sidste årtusinde.
>
> En ting er at du bruger det, men jeg synes ikke det er på sin plads at
> promovere gammelt skrammel anno 2010, på samme måde, som du nok heller ikke
> vil promovere HTML 2.0.
Scriptet lod umiddelbart til at opfylde de formelle krav til diskret
design (selv om der ikke er en egen tlig standard SVJV). Desuden, så var
det det eneste af sin art, jeg kunne finde. Alle andre brugte f.eks.
JQuery, og så ryger lidt af idéen.
> Du skal dog have tak, for det gav mig inspiration til noget jeg havde glemt,
> netop at indføre tablesort i mit notes.
Så kunne det script da bruges til noget alligevel - he ;)
> Det er jeg så på vej tll, og i den forbindelse har jeg lavet:
> 1) Quicksort i stedet for bubblesort, da det antages at det generelt er den
> hurtigste.
Lyder rigtig godt.
> 2) Tablesort, som benytter Quicksort der er generel.
Alle bedre løsninger er velkomne. Linksne i bunden af hjemmesiden er kun
en (foreløbig) "opsummering"; på forsiden har jeg (forberedt) link til
en scriptsamlingsside, som skal bedømme og give karakterer til de bedste
færdige, diskrete, ikke-frameworks-scripts, man kan finde på nettet, som
ikke koster penge.
Den side med bedømmelser er ikke klar endnu, men den skal nok komme op.
Udover kriterier som ikke-frameworks, crossbrowser, implementerings- og
brugervenlighed og hvor tæt de iøvrigt følger tanken om diskret design,
kunne man også gå lidt grundigere til værks med selve JS-koden bag, og
give den bedømmelser. Dette kræver dog nok lidt viden, hvis det skal
være seriøst, men det er en idé. I hvert fald ved rene JS-scripts.
>> Jeg regner med/håber på, det kun lige tager en time med den sidste
>> fejlretning, nu er jeg på ret spor. Jeg gider ikke sidde og se på
>> ASP-fejl, det virker ikke proft.
>
> Og jeg gider ikke se på alt det mærkelige/oldnordiske javascript - "det
> virker ikke proft."
>
> Det er lidt underligt at man ikke får ryddet op i tingene, men det er nok
> tidens trend - "hovsa det virker, så det må vi bruge", og så bygger man
> videre i eet stort patchwork(kludetæppe), uden at revurdere eksisterende
> kode.
Der er så vidt jeg kan se indlagt Dean Edwards IE-script. Formentlig for
ikke at opfinde den dybe tallerken igen. Det er måske det, du mener.
> Disse nævnte scripts er naturligvis til fri afbenyttelse, og statisk brug af
> dem er sådan set på plads.
Du får et link, når det er.
> I forbindelse med mit notes, er der dog den ekstra udfordring, at alt er
> dynamisk, så det skal jeg lige have på plads inden jeg præsenterer
> 'løsningen'.
Ja, jeg kan se, du har lagt et link i ny kommentar. Det vil jeg undersøge
;)
MVH
Rune Jensen
| |
Stig Johansen (04-01-2010)
| Kommentar Fra : Stig Johansen |
Dato : 04-01-10 19:57 |
|
Rune Jensen wrote:
> Der er så vidt jeg kan se indlagt Dean Edwards IE-script. Formentlig for
> ikke at opfinde den dybe tallerken igen. Det er måske det, du mener.
Jeg ved ikke hvem Dean Edwards er, men det første der sprang i øjnene, nu
når vi snakker eventhandlers, var, at man ikke bruger IE's eventmodel
(attachEvent).
Det er da tåbeligt at lave mærkelige krumspring, når nu den har eksisteret i
gud ved ikke hvor lang tid.
Men jo, det virker, men det gør HTML 2.0 jo også.
--
Med venlig hilsen
Stig Johansen
| |
Lasse Reichstein Nie~ (04-01-2010)
| Kommentar Fra : Lasse Reichstein Nie~ |
Dato : 04-01-10 21:07 |
|
Stig Johansen <wopr.dk@gmaill.com> writes:
> Det er jeg så på vej tll, og i den forbindelse har jeg lavet:
> 1) Quicksort i stedet for bubblesort, da det antages at det generelt er den
> hurtigste.
Det er en god antagelse. Dog bruger man ofte en insertion-sort til små
arrays (også som base-tilfælde for QuickSort).
Har du tjekket om den indbyggede array-sort kan bruges? Jeg ved mindst
en browser bruger en QuickSort, men det koster selvfølgeligt lidt at
være generel.
/l
--
Lasse Reichstein Holst Nielsen
DHTML Death Colors: <URL: http://www.infimum.dk/HTML/rasterTriangleDOM.html>
'Faith without judgement merely degrades the spirit divine.'
| |
Stig Johansen (04-01-2010)
| Kommentar Fra : Stig Johansen |
Dato : 04-01-10 22:14 |
|
Lasse Reichstein Nielsen wrote:
> Har du tjekket om den indbyggede array-sort kan bruges?
Nej det har jeg ikke tjekket.
Jeg synes ikke rigtig det fremgår om det kan være 2 dimensionelt array, som
jeg bruger.
I det hele taget kender jeg ikke så meget til javascript, men en hel del til
Windows/XML/DOM, så mit udgangspunket er hvordan jeg ville lave det i
windows, og så 'javascriptificere' det.
Men i forbindelse med en table sort tror jeg nu ikke det er selve
sorteringen, der betyder mest, men manipuleringen med DOM nodes.
--
Med venlig hilsen
Stig Johansen
| |
Stig Johansen (05-01-2010)
| Kommentar Fra : Stig Johansen |
Dato : 05-01-10 08:28 |
|
Lasse Reichstein Nielsen wrote:
> Har du tjekket om den indbyggede array-sort kan bruges?
Jeg har stadig ikke tjekket, men observeret noget andet.
Rutinen er ikke gennemtestet, da det var noget jeg flikkede sammen, men ved
afprøvning af numeriske værdier, blev det sorteret som strenge, uagtet jeg
definerede indholdet (første element) som tal.
Jeg har derfor lavet en alternativ quicksort, som bruger første element som
sorteringskriterie.
Så mit gæt vil være, at den indbyggede sort gør det samme.
Tingene er skilt ad, så det er kun et spørgsmål om at rette en enkelt linie
for at implementere alternative sorteringsalgoritmer, men jeg ser ikke
umiddelbart behov for at tjekke det.
I øvrigt tog det laang tid at få tal sorteringen til at virker, for den
gamle nar havde lavet en quicksortA, men glemt at rette de rekursive kald,
så det gav _rigtig_ meget sjov når man kaldte quicksortA, som internt
kaldte quicksort
--
Med venlig hilsen
Stig Johansen
| |
Lasse Reichstein Nie~ (06-01-2010)
| Kommentar Fra : Lasse Reichstein Nie~ |
Dato : 06-01-10 19:58 |
|
Stig Johansen <wopr.dk@gmaill.com> writes:
> Lasse Reichstein Nielsen wrote:
>
>> Har du tjekket om den indbyggede array-sort kan bruges?
>
> Jeg har stadig ikke tjekket, men observeret noget andet.
>
> Rutinen er ikke gennemtestet, da det var noget jeg flikkede sammen, men ved
> afprøvning af numeriske værdier, blev det sorteret som strenge, uagtet jeg
> definerede indholdet (første element) som tal.
> Jeg har derfor lavet en alternativ quicksort, som bruger første element som
> sorteringskriterie.
>
> Så mit gæt vil være, at den indbyggede sort gør det samme.
Det er korrekt. Den indbyggede Array.prototype.sort i Javascript, med
dens default-sammenligningsfunktion, sammenligner alle elementer som
strenge (undtagen undefined, som altid sorteres efter resten af
elementerne).
Hvis man vil have en anden sammenligning, så skal man give en
sammenligningsfunktion med.
Det spændende ved open-source browsere er at man kan se hvad de
gør :) Her er filerne med sorterings-rutinen i Safari, Chrome og Firefox:
http://trac.webkit.org/browser/trunk/JavaScriptCore/runtime/ArrayPrototype.cpp
(funktionen arrayProtoFuncSort, "min"-sort - en simpel algoritme, men nok
ikke god til store arrays.)
http://code.google.com/p/v8/source/browse/branches/bleeding_edge/src/array.js
(funktionen ArraySort, quicksort + insertion-sort som base)
http://mxr.mozilla.org/seamonkey/source/js/src/jsarray.c
(funktionen js_MergeSort, merge-sort-baseret, hvis man kan stole på navnet)
> Tingene er skilt ad, så det er kun et spørgsmål om at rette en enkelt linie
> for at implementere alternative sorteringsalgoritmer, men jeg ser ikke
> umiddelbart behov for at tjekke det.
>
> I øvrigt tog det laang tid at få tal sorteringen til at virker, for den
> gamle nar havde lavet en quicksortA, men glemt at rette de rekursive kald,
> så det gav _rigtig_ meget sjov når man kaldte quicksortA, som internt
> kaldte quicksort
En klassiker :)
/L
--
Lasse Reichstein Holst Nielsen
DHTML Death Colors: <URL: http://www.infimum.dk/HTML/rasterTriangleDOM.html>
'Faith without judgement merely degrades the spirit divine.'
| |
Stig Johansen (06-01-2010)
| Kommentar Fra : Stig Johansen |
Dato : 06-01-10 20:55 |
|
Lasse Reichstein Nielsen wrote:
> Det er korrekt. Den indbyggede Array.prototype.sort i Javascript, med
> dens default-sammenligningsfunktion, sammenligner alle elementer som
> strenge (undtagen undefined, som altid sorteres efter resten af
> elementerne).
Så giver det sig selv - at den er 'ruled out' i sorterings sammenhæng.
> Hvis man vil have en anden sammenligning, så skal man give en
> sammenligningsfunktion med.
[snip]
Jeg ved ikke hvor du vil hen med den sammenligning.
Den Quicksort(A) jeg har brugt/lavet er en stable version, så det vil
formentlig ændre noget på billedet, hvis vi snakker performance.
I øvrigt vil jeg mene, at performancefaktor for små datasæt ikke betyder så
meget, medmindre små datasæt skal sorteres ofte, hvilket ikke er tilfældet
ved web 'ting'.
> En klassiker :)
Ja - og man kan klaske sig selv for panden - igen - igen :)
--
Med venlig hilsen
Stig Johansen
| |
|
|