/ Forside / Teknologi / Udvikling / Java Scripts / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java Scripts
#NavnPoint
molokyle 5410
Klaudi 2799
smorch 2439
kim 1360
Harlekin 1134
bentjuul 984
gibson 800
severino 695
Random 675
10  konsulent.. 626
Hjælp til problem med Javascript i Firefox
Fra : Clarisse


Dato : 18-06-07 20:21

Jeg har fundet en meget dejlig og smart javascriptkode et sted på
internettet, der gør det muligt, at man klikker på et
billede/noget tekst, der er ude ved siden af et input/textarea,
og så popper der noget indhold op i feltet
Det bruger jeg så til at lave smileys i mit forum, men nu har to
af mine brugere meldt tilbage, at det ikke virker i Firefox - og
jeg kan således heller ikke vide, om fejlen ikke også opstår i
andre browsere

Da man, for at få adgang til forummet, skal have en bruger, for
at se siden med eksemplet på, vil jeg i stedet skrive koden her
ind:

Dette er den længste stump kode, som sidder øverst på min side:

<script type="text/javascript">
   function AddText(startTag,defaultText,endTag)
   {
    with(document.all.formen) // 'form' er navnet på den form der
skal gøres noget med
    {
       if (besked.createTextRange)
       {
          var text;
          besked.focus(besked.caretPos);   // 'message' er navnet paa det
felt der skal skrives i, hvis du aendre navnet, så husk at aendre
det alle steder
          besked.caretPos =
document.selection.createRange().duplicate();
          if(besked.caretPos.text.length>0)
          {
            var sel = besked.caretPos.text;
            var fin = '';
            while(sel.substring(sel.length-1, sel.length)==' ')
            {
             sel = sel.substring(0, sel.length-1)
             fin += ' ';
            }
            besked.caretPos.text = startTag + sel + endTag + fin;
          }
          else
            besked.caretPos.text = startTag+defaultText+endTag;
       }
       else besked.value += startTag+defaultText+endTag;
    }
   }
</script>


Og her er så det, der laver selve de små knapper man kan trykke
på:

<a href="javascript:AddText('',':)','');"><img
src="forum/images/smileys/01.gif" class="zero" alt="Glad smiley"
/></a>
<a href="javascript:AddText('',';)','');"><img
src="forum/images/smileys/02.gif" class="zero" alt="Blinkende
smiley" /></a>
<a href="javascript:AddText('',':P','');"><img
src="forum/images/smileys/03.gif" class="zero" alt="Tungerækkende
smiley" /></a>
<a href="javascript:AddText('',':D','');"><img
src="forum/images/smileys/04.gif" class="zero" alt="Lykkelig
smiley" /></a>

Osv., der er rigtig mange smileys ;)


Hvis nogle skulle finde det nyttigt at få et link til min
hjemmeside alligevel, så er det www.clarisse.dk, og smileyerne
finder I, når man går ind i forummet, of opretter/redigere
tråde/svar


I må meget gerne skrive til mig på baby-dansk, da det ikke skal
være nogen stor hemmelighed, at jeg ikke kan javascript, men at
mine interesseområder i stedet ligger inden for
HTML/CSS/PHP/MySQL

Håber virkelig at I kan hjælpe mig :D

Mvh.
Clara


--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

 
 
Erik Ginnerskov (18-06-2007)
Kommentar
Fra : Erik Ginnerskov


Dato : 18-06-07 20:50

Clarisse wrote:

> men nu har to
> af mine brugere meldt tilbage, at det ikke virker i Firefox - og
> jeg kan således heller ikke vide, om fejlen ikke også opstår i
> andre browsere

> with(document.all.formen)

Der har du forklaringen på, at det kun virker i IE. Selectoren document.all
er en IE-ting. Det skal ændres til document.GetElementById og så skal du
sætte en id på den formular, hvor du vil give brugerne mulighed for at putte
en smiley ind.

--
Med venlig hilsen
Erik Ginnerskov
http://hjemmesideskolen.dk/ - http://ginnerskov.dk/
http://html-faq.dk



Clarisse (18-06-2007)
Kommentar
Fra : Clarisse


Dato : 18-06-07 22:18

Erik Ginnerskov wrote in dk.edb.internet.webdesign.clientside:

> > with(document.all.formen)
>
> Der har du forklaringen på, at det kun virker i IE. Selectoren document.all
> er en IE-ting. Det skal ændres til document.GetElementById

Har allerede et id på min form (formen), men at skifte document.all ud med
document.GetElementById virker altså ikke :(

Her er det har prøvet:

with(document.GetElementById.formen) og
with(document.GetElementById)

Det virker ikke...
Hvad er det jeg gør galt?

Men ellers, tak for svaret :)

Mvh.
Clara

P.S. document.all ser ud til at virke i Opera også ;)


--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Erik Ginnerskov (19-06-2007)
Kommentar
Fra : Erik Ginnerskov


Dato : 19-06-07 04:21

Clarisse wrote:

> Har allerede et id på min form (formen), men at skifte document.all
> ud med document.GetElementById virker altså ikke :(
>
> Her er det har prøvet:
>
> with(document.GetElementById.formen) og
> with(document.GetElementById)

width(document.getElementById(form)) //form sættes som id, ikke navn.

> P.S. document.all ser ud til at virke i Opera også ;)

Hvis Opera er sat op til at identificere sig som IE.

Selectoren document.all er et left-over fra den store browserkrig mellem IE4
og NN4 i forrige årtusinde. IE4 forstod ikke document.getElementById og NN4
forstod ikke document.all.

I dag forstår alle nyere browsere document.getElementById.

--
Med venlig hilsen
Erik Ginnerskov
http://hjemmesideskolen.dk/ - http://ginnerskov.dk/
http://html-faq.dk



Clarisse (19-06-2007)
Kommentar
Fra : Clarisse


Dato : 19-06-07 19:56

Erik Ginnerskov wrote in dk.edb.internet.webdesign.clientside:
> width(document.getElementById(form)) //form sættes som id, ikke navn.
>

Mener du ikke with?
Har prøvet både med width og with nu, men det virker ikke... Her er min kode:

<script type="text/javascript">
   function AddText(startTag,defaultText,endTag)
   {
    with(document.getElementById(formen))
    {
       if (besked.createTextRange)
       {
          var text;
          besked.focus(besked.caretPos);
          besked.caretPos = document.selection.createRange().duplicate();
          if(besked.caretPos.text.length>0)
          {
            var sel = besked.caretPos.text;
            var fin = '';
            while(sel.substring(sel.length-1, sel.length)==' ')
            {
             sel = sel.substring(0, sel.length-1)
             fin += ' ';
            }
            besked.caretPos.text = startTag + sel + endTag + fin;
          }
          else
            besked.caretPos.text = startTag+defaultText+endTag;
       }
       else besked.value += startTag+defaultText+endTag;
    }
   }
</script>

>//form sættes som id, ikke navn.

Min <form> har kun et id, ikke et name, hvis det er det du mener:

<form id=\"formen\" action=\"index2.php?side=forumopret&amp;kat=$kat\"
method=\"post\">

Koden er taget ud af en PHP-kode, derfor backlash før citationstegn

Mvh.
Clara

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Erik Ginnerskov (19-06-2007)
Kommentar
Fra : Erik Ginnerskov


Dato : 19-06-07 20:47

Clarisse wrote:

> Mener du ikke with?

Jo, selvfølgelig

> Her er min kode:
>
> [klip javascriptkode]

Så må jeg appelere til andre om assistance, Jeg er ikke den store
javascriptekspert.

> <form id=\"formen\" action=\"index2.php?side=forumopret&amp;kat=$kat\"
> method=\"post\">

> Koden er taget ud af en PHP-kode, derfor backlash før citationstegn

Det er kun på serveren, det ser sådan ud. Når det bliver sendt til en
browser, er backslash'ene forsvundet.

--
Med venlig hilsen
Erik Ginnerskov
http://hjemmesideskolen.dk/ - http://ginnerskov.dk/
http://html-faq.dk



Clarisse (22-06-2007)
Kommentar
Fra : Clarisse


Dato : 22-06-07 12:26

Erik Ginnerskov wrote in dk.edb.internet.webdesign.clientside:

> Så må jeg appelere til andre om assistance, Jeg er ikke den store
> javascriptekspert.
Nå, okay, hehe...
Men tak for, at du prøvede at hjælpe mig :)

>[php/html-kode]
> Det er kun på serveren, det ser sådan ud. Når det bliver sendt til en
> browser, er backslash'ene forsvundet.

Jah, det var bare fordi jeg ikke lige gad, at fjerne backlashen og
variablen, da jeg skulle sende koden
Bare så der ikke er nogle der tror, at det er der fejlen ligger

Men tak for din tid

//Clarisse


--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Lasse Reichstein Nie~ (19-06-2007)
Kommentar
Fra : Lasse Reichstein Nie~


Dato : 19-06-07 22:24

Clarisse <anonym@clarisse.ga> writes:

> Her er det har prøvet:
>
> with(document.GetElementById.formen) og
> with(document.GetElementById)

Det skal være
with(document.getElementById("formen")) {
...
}

document.getElementById er en funktion. Den tager id'en på elementet
man vil have fat i, som argument, og returnerer elementet,
altså: document.getElementById("elementId")
Til sammenligning er document.all en "collection" der indeholder
alle elementer med et id, og som indekseres med id'et, altså:
document.all["elementId"]. Det kan skrives på kortere form som:
document.all.elementId, men det er bare en forkortelse for den
første skrivemåde.


Jeg kan dog anbefale at undgå "with"-konstruktionen helt. Den gør at
alle egenskaber på objektet (her form-elementet) bliver tilgængelige
som om de var lokale variable. Det betyder at et væld af kendte og
ukendte variable kan overskygge andre variable som man tror man kan
bruge. Det er meget sikrere at tilgå objektet eksplicit:

var form = document.getElementById("formen");
form.elements["birger"].value = "ny birger";
//etc...

Hvis elementet faktisk er en form, så kan man også bruge:

var form = document.forms["formen"];
eller, lige så frarådet:
with(document.forms["formen"]) {...

document.forms er også en collection, der kun indeholder
form-elementer på siden.

> P.S. document.all ser ud til at virke i Opera også ;)

Den virker også i Firefox, men derfor kan man jo godt foretrække
standard-metoden. Der er flere browsere hvor document.getElementById
virker og document.all ikke gør, end det modsatte (det er vist kun
IE4 og WebTV hvor kun document.all virker).

/L
--
Lasse Reichstein Nielsen - lrn@hotpop.com
DHTML Death Colors: <URL:http://www.infimum.dk/HTML/rasterTriangleDOM.html>
'Faith without judgement merely degrades the spirit divine.'

Søg
Reklame
Statistik
Spørgsmål : 177459
Tips : 31962
Nyheder : 719565
Indlæg : 6408173
Brugere : 218881

Månedens bedste
Årets bedste
Sidste års bedste