Avatar billede twistedup Nybegynder
12. september 2007 - 14:15 Der er 10 kommentarer og
1 løsning

ID-kald ødelægger function

Hej Eksperter,

Jeg har problemer med denne showhide-funktion, hvor jeg er nød til at anvende "<!--KundeID-->" til at hente emnernes ID, da jeg sidder med et CMS-system. Funktionen åbner en boks der er tilknyttet linket.
Jeg ved det virker med PHP, men systemet understøtter desværre ikke dette.

Koden "<!--" ødelægger min funktion, således at resten af linien i scriptet ignoreres. What to do?


                    <script type="text/javascript"> <!-- vis/skjul funktion -->
                          function getElm(ID) {
                              if (document.getElementById) {
                                  return document.getElementById(ID);
                              }
                              else if (document.all) {
                                  return document.all[ID];
                              }
                              else { return false;}
                          }
                          function showhide (elmID) {
                              elm = getElm(elmID);
                              if (elm && elm.style) {
                                    if (elm.style.display == "block") {
                                        elm.style.display = "none";
                                        document.getElementById('showhidelink<!--@KundeID-->').firstChild.nodeValue = 'Vis info';
                                    }
                                    else {
                                        elm.style.display = "block";
                                        document.getElementById('showhidelink<!--@KundeID-->').firstChild.nodeValue = 'Skjul info';
                                    }
                              }
                              return false;
                          }
                      </script>
Avatar billede twistedup Nybegynder
12. september 2007 - 15:02 #1
hov en lille fejl - linien:  function showhide (elmID) {

skal være:  function showhide<!--@KundeID--> (elmID) {

..og det er det det giver problemet
Avatar billede barklund Nybegynder
12. september 2007 - 15:34 #2
Del det op i to strenge og sæt dem sammen:

document.getElementById('showhidelink<'+'!--@KundeID-->').firstChild.nodeValue = 'Vis info';

Det burde virke :)

Alternativt, smid hele din script-blok i en html-cdata-blok:

<script type="text/javascript"> <!-- vis/skjul funktion -->
// <![CDATA[
...
// ]]>
</script>

Det burde også virke :)

--
Morten Barklund
Avatar billede twistedup Nybegynder
12. september 2007 - 16:13 #3
Det kan jeg altså ikke får til at virke. Det er kun linien med:

function showhide<!--@KundeID--> (elmID) {

..der giver mig problemer?

Hvordan ville du lave samme trick i denne linie - sådan her?

function showhide<'+'!--@KundeID--> (elmID) {

??
Avatar billede barklund Nybegynder
12. september 2007 - 16:23 #4
Ah, okay nu forstår jeg hvad du skriver. Men hvis HTML-kommentaren erstattes af kunde-id'et inden javascriptet outputtes til browseren, så burde det jo virke. Hvordan ser det javascript ud, som ender i browseren når man ser siden?
Avatar billede twistedup Nybegynder
12. september 2007 - 16:42 #5
I browseren sætter den faktisk ikke ID'et ind. Forstår det ikke. Den sætter det fint ind, hvis jeg bruger php, hvor jeg henter ID'et med <?php echo $row_rsEmneListe['id']; ?> ..

Det er CMS'en der ødelægger det..!
Avatar billede olebole Juniormester
12. september 2007 - 20:41 #6
<ole>

barklund >> det er ikke en CDATA-blok, men en udkommenteret CDATA-blok, som næppe har effekt på noget somhelst  :)
En CDATA-blok ser sådan ud:

<script type="text/javascript"> <!-- vis/skjul funktion -->
<![CDATA[
...
]]>
</script>

/mvh
</bole>
Avatar billede olebole Juniormester
12. september 2007 - 20:45 #7
- men er HTML-kommentarerne i script-blokken ikke et problem? Der burde vel f.eks. stå:

<script type="text/javascript"> /* vis/skjul funktion */

- eller bare:

<script type="text/javascript"> // vis/skjul funktion
Avatar billede barklund Nybegynder
13. september 2007 - 11:09 #8
olebole: hvad er en udkommenteret cdata-blok? CDATA er da noget XML-sk (hhv. SGML'sk) og hvordan kan en javascript-kommentar udkommetere det? XML aner da ikke hvad en javascript-kommentar er?
Avatar billede barklund Nybegynder
13. september 2007 - 11:10 #9
Dette er en udkommenteret cdata blok:

<!-- <![CDATA[ den her er udkommenteret ]]> -->

Det her er da ikke:

// <![CDATA[ den her er ikke udkommenteret ]]>
/* <![CDATA[ den her er heller ikke udkommenteret ]]> */

CDATA har jo kun noget med HTML/XML/SGML at gøre - ikke javascript?
Avatar billede roenving Novice
13. september 2007 - 12:01 #10
Skal det ikke være:

function showhide ("<!--@KundeID-->") { ?-)
Avatar billede twistedup Nybegynder
14. september 2007 - 16:13 #11
Jeg har selv løst det..fjernede bare <!--@KundeId--> , så der ikke var id efter showhide...

function showhide (elmID) {

lukker uden at give point, da ingen af jeres svar hjalp mig desværre.
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester