Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

2 spørgsmål

1 view
Skip to first unread message

Rune Jensen

unread,
May 29, 2012, 10:54:18 AM5/29/12
to
Jeg skal have et array med alle links på en side, hvis href indeholder
mailto. Min Javascript-bog er lidt gammel, og anbefaler "links". Er
det den rigtige fremgangsmåde, eller skal jeg gå via
document.getElementByTagname("a")?

Jeg skal også have konverteret imellem chr og asc. Hvordan gøres det i
JS?

F.eks. vil jeg have konverteret første karakter i en string til asc,
kan jeg bruge char() til at finde første bogstav i strengen, men det
er jo ikke ASCI-tallet, men bogstavet selv. I beregningen/formlen, jeg
har lavet (i ASP, den skal kunne virke også serverside) indbefattes
både konvertering til asc, derefter udenom en chr, som giver
karakteren udfra ASC-tallet.

Nogen forslag?


MVH
Rune Jensen

Birger Sørensen

unread,
May 29, 2012, 11:23:46 AM5/29/12
to
Rune Jensen har bragt dette til verden:
Ved ikke præcis hvordan din gamle bog anbefaler, men jeg ville
foretrække
document.getElementByTagname("a")
Mest fordi den er sikker i alle browsere.

https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/charCodeAt

så noget i retning af:

var link = null, idx = 0, colon_idx = -1, ascii_char = -1;
var ascii_array = new Array[];
var links = document.getElementByTagname("a");
if (links && (links.length > 0)) {
for (idx = 0; idx < links.length; idx++) {
link = links[idx];
colon_idx = link.href.indexOf('mailto:');
if (colon_idx > -1) {
ascii_char = link.href.charCodeAt(colon_idx+7);
ascii_array[ascii_array.length] = ascii_char;
}
}
}

ikke testet...

Birger

--
http://varmeretter.dk - billig, sund og hurtig mad
Utils http://sdccms.dk/ordbog/ http://sdccms.dk/mailfriend/


Rune Jensen

unread,
May 29, 2012, 11:52:59 AM5/29/12
to
On 29 Maj, 17:23, Birger Sørensen <s...@bbsorensen.com> wrote:

> Ved ikke præcis hvordan din gamle bog anbefaler,

Den snakker om forskellen imellem IE5 og Netscape 6 :)

> men jeg ville
> foretrække
> document.getElementByTagname("a")
> Mest fordi den er sikker i alle browsere.

Ja, det tænkte jeg nok. Årsagen til, jeg overvejede "links", var også
mest fordi jeg forestillede mig, det ville være hurtigere at udføre.
Hvis det altså også virkede. Lidt ligesom man kan "short-cutte" til
form elementer ved at bruge "form".


> så noget i retning af:
>
> var link = null, idx = 0, colon_idx = -1, ascii_char = -1;
> var ascii_array = new Array[];
> var links = document.getElementByTagname("a");
> if (links && (links.length > 0)) {

Den skulle jeg lige tænke over, men lader til, du tester for både om
der i det hele taget er nogle links, og om det så er flere end ét?

>    for (idx = 0; idx < links.length; idx++) {
>       link = links[idx];
>       colon_idx = link.href.indexOf('mailto:');
>       if (colon_idx > -1) {
>          ascii_char = link.href.charCodeAt(colon_idx+7);
>          ascii_array[ascii_array.length] = ascii_char;
>          }
>       }
>    }

Så CharCodeAt bruges til at få ASC-værdien. Så burde første del være
på plads.

Hvordan får man en chr (altså en fysisk karaktér) ud af en ASC-værdi?

Jeg vil teste dit script, og så vender jeg nok tilbage. Jeg har
allerede lavet noget JS (faktisk hele funktionen), men det er stadig
lidt for meget ASP-ficeret til at det er værd at teste.

Tak for din hjælp.


MVH
Rune Jensen

Birger Sørensen

unread,
May 29, 2012, 1:07:38 PM5/29/12
to
Rune Jensen har bragt dette til verden:
> On 29 Maj, 17:23, Birger Sørensen <s...@bbsorensen.com> wrote:
>> var links = document.getElementByTagname("a");
>> if (links && (links.length > 0)) {
>
> Den skulle jeg lige tænke over, men lader til, du tester for både om
> der i det hele taget er nogle links, og om det så er flere end ét?

Ja og nej. links vil være udefineret, hvis noget går galt med
getElementByTagname(), og links.length vil være 0, hvis der ingen links
er. Så testen er på om der overhovedet er nogen links.
>
>>    for (idx = 0; idx < links.length; idx++) {
>>       link = links[idx];
>>       colon_idx = link.href.indexOf('mailto:');
>>       if (colon_idx > -1) {
>>          ascii_char = link.href.charCodeAt(colon_idx+7);
>>          ascii_array[ascii_array.length] = ascii_char;
>>          }
>>       }
>>    }
>
> Så CharCodeAt bruges til at få ASC-værdien. Så burde første del være
> på plads.
>
> Hvordan får man en chr (altså en fysisk karaktér) ud af en ASC-værdi?

Hvis du skal bruge karakteren, hvorfor så gemme ASCII-værdien?
Du kan få karakteren ved at bruge charAt() eller blot
link.href[colon_idx+7] i stedet.

https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/fromCharCode

var ascii_char = String.fromCharCode(ascii_array[index]);

> Jeg vil teste dit script, og så vender jeg nok tilbage.
;-)

Stig Johansen

unread,
May 30, 2012, 3:08:42 AM5/30/12
to
Rune Jensen wrote:

> On 29 Maj, 17:23, Birger Sørensen <s...@bbsorensen.com> wrote:
>
>> Ved ikke præcis hvordan din gamle bog anbefaler,
>
> Den snakker om forskellen imellem IE5 og Netscape 6 :)

Smid den bog ad helvede til, eller brænd den på bålet!

> Ja, det tænkte jeg nok. Årsagen til, jeg overvejede "links", var også
> mest fordi jeg forestillede mig, det ville være hurtigere at udføre.
> Hvis det altså også virkede. Lidt ligesom man kan "short-cutte" til
> form elementer ved at bruge "form".

Jeg ved ikke om det virker i alle browsere (i dag), men det trick gik ud på
at sætte id=name (behind the scene) - vistnok en IE 'opfindelse'.

> Jeg vil teste dit script, og så vender jeg nok tilbage. Jeg har
> allerede lavet noget JS (faktisk hele funktionen), men det er stadig
> lidt for meget ASP-ficeret til at det er værd at teste.

Du kan da bare poste den (med ASP kommentarer), så er der sikkert nogle der
kan hjælpe ;-)

--
Med venlig hilsen
Stig Johansen

Rune Jensen

unread,
May 30, 2012, 10:28:33 AM5/30/12
to
On 29 Maj, 19:07, Birger Sørensen <s...@bbsorensen.com> wrote:

> Hvis du skal bruge karakteren, hvorfor så gemme ASCII-værdien?

Fordi, det jeg vil er at inkrementere eller decrementere ascii-værdien
igennem hele strengen.

Sådan at f.eks. a->b, b->c, c->d osv.

Rent faktisk er det det, som ASPen gør. Den spoofer mailadressen udfra
en simpel faktor. Jeg vil så bruge den omvendte funktion i JS til at
despoofe miladressen (eller form-feltet eller noget andet, funktionen
skal - forhåbentlig - ende med at være generisk i både ASP og JS).

Men jeg har fundet en løsning i JS. Jeg rodede Stigs gamle WOPR-koder
igennem, og jeg fandt String.fromCharCode (så vidt jeg husker er det
navnet). Den virker i hvert fald, så den konverterer fra ASC->chr...
iøvrigt fandt jeg, at CharCodeAt er langt lettere (og pænere) end det
tilsvarende i ASP med asc og MID.

Jeg har ikke JS-scriptet her, men noget med:

function clearText( str)
var s=''
for (var i=0; i<str.length; i++){
s += String.fromCharCode( str.charCodeAt( i ) + 1))
}
return s

hvor '+1' er faktoren, som altså også kan være negativ.


MVH
Rune Jensen

Rune Jensen

unread,
May 30, 2012, 10:53:01 AM5/30/12
to
On 30 Maj, 09:08, Stig Johansen <wopr...@gmail.com> wrote:

> Smid den bog ad helvede til, eller brænd den på bålet!

Bogen var nu også mest for at have et sted at starte, behøver den ikke
mere.

Som jeg skrev til Birger, så fandt jeg faktisk løsningen på sidste
problem udfra dine gamle koder. Sad og rev mig i håret en hel time
inden da :)


> Du kan da bare poste den (med ASP kommentarer), så er der sikkert nogle der
> kan hjælpe ;-)

Jeg har en meget pænere kode nu, så poster den nok med nye spørgsmål
senere (er ikke ved 'puteren i øjeblikket). Hvis i så har lyst, må i
meget gerne komme med forslag til forbedringer, så den kan komme up-to
date, det ville være alle tiders.

Selvfølgelig er målet også, at der skal bruges moderne kode, og det
skal virke i i hvert fald alle browsere, som man med rimelighed kan
forlange. Ellers bliver det heller ikke sjovt at lave i længden - jeg
er helt enig.


MVH
Rune Jensen

Rune Jensen

unread,
May 30, 2012, 11:17:44 AM5/30/12
to
On 29 Maj, 19:07, Birger Sørensen <s...@bbsorensen.com> wrote:
> Rune Jensen har bragt dette til verden:
>
> > On 29 Maj, 17:23, Birger Sørensen <s...@bbsorensen.com> wrote:
> >> var links = document.getElementByTagname("a");
> >> if (links && (links.length > 0)) {
>
> > Den skulle jeg lige tænke over, men lader til, du tester for både om
> > der i det hele taget er nogle links, og om det så er flere end ét?
>
> Ja og nej. links vil være udefineret, hvis noget går galt med
> getElementByTagname(), og links.length vil være 0, hvis der ingen links
> er. Så testen er på om der overhovedet er nogen links.

I så fald, er det muligt (dvs. smart) at køre med en loop eller while?

Jeg tænker på, om man kan definere while til netop ikke at køre, hvis
betingelserne ikke er opfyldt.


MVH
Rune Jensen

Birger Sørensen

unread,
May 30, 2012, 1:11:09 PM5/30/12
to
Rune Jensen udtrykte prᅵcist:
> On 29 Maj, 19:07, Birger Sᅵrensen <s...@bbsorensen.com> wrote:
>> Rune Jensen har bragt dette til verden:
>>
>>> On 29 Maj, 17:23, Birger Sᅵrensen <s...@bbsorensen.com> wrote:
>>>> var links = document.getElementByTagname("a");
>>>> if (links && (links.length > 0)) {
>>
>>> Den skulle jeg lige tᅵnke over, men lader til, du tester for bᅵde om
>>> der i det hele taget er nogle links, og om det sᅵ er flere end ᅵt?
>>
>> Ja og nej. links vil vᅵre udefineret, hvis noget gᅵr galt med
>> getElementByTagname(), og links.length vil vᅵre 0, hvis der ingen links
>> er. Sᅵ testen er pᅵ om der overhovedet er nogen links.
>
> I sᅵ fald, er det muligt (dvs. smart) at kᅵre med en loop eller while?
>
> Jeg tᅵnker pᅵ, om man kan definere while til netop ikke at kᅵre, hvis
> betingelserne ikke er opfyldt.

idx = 0;
while (idx < links.length) {
...
idx++;
}

gᅵr det samme.
Mᅵske mere elegant. Smag og behag ^^

Forskellen pᅵ for og while, er at while checker inden lᅵkken udfᅵres,
mens for checker efter.
for lᅵkken udfᅵres altsᅵ altid mindst een gang, mens while lᅵkken kan
springes helt over.

Rune Jensen

unread,
May 31, 2012, 11:09:53 AM5/31/12
to
On 30 Maj, 19:11, Birger Sørensen <s...@bbsorensen.com> wrote:

> Forskellen på for og while, er at while checker inden løkken udføres,
> mens for checker efter.
> for løkken udføres alts altid mindst een gang, mens while løkken kan
> springes helt over.

Ja, det var nogenlunde det, jeg tænkte, men var bare ikke helt
sikker :)

Anyways, jeg har en beta-kode klar, så kommer nok med flere spørgsmål
i weekenden.

Tak for jeres svar, de var meget brugbare.


MVH
Rune Jensen
0 new messages