Avatar billede AnyFellow Mester
19. april 2012 - 14:20 Der er 11 kommentarer og
1 løsning

Placering af funktioner i ekstern fil

Jeg har flere scripts der ligner denne:

<script type="text/javascript">
    $(document).ready(function() { // wait for the DOM to be ready
    $('#personal_email').submit(function() { // bind function to submit event of form
      $.ajax({
          type: $(this).attr('method'), // get type of request from 'method'
          url: $(this).attr('action'), // get url of request from 'action'
          data: $(this).serialize(), // serialize the form's data
          success: function(responseText) {
              // if everything goes well, update the div with the response
              $('#result').html(responseText);
          }
      });
    return false; // important: prevent the form from submitting
    });
  });
</script>


Jeg har prøvet at lave en eksterne fil, men jeg kan ikke få den til at virke:

    $(document).ready(function() { // wait for the DOM to be ready
    $('#personal_email').submit(function() { // bind function to submit event of form
      $.ajax({
          type: $(this).attr('method'), // get type of request from 'method'
          url: $(this).attr('action'), // get url of request from 'action'
          data: $(this).serialize(), // serialize the form's data
          success: function(responseText) {
              // if everything goes well, update the div with the response
              $('#result').html(responseText);
          }
      });
    return false; // important: prevent the form from submitting
    });
  });

    $(document).ready(function() { // wait for the DOM to be ready
    $('#personal_email').submit(function() { // bind function to submit event of form
      $.ajax({
          type: $(this).attr('method'), // get type of request from 'method'
          url: $(this).attr('action'), // get url of request from 'action'
          data: $(this).serialize(), // serialize the form's data
          success: function(responseText) {
              // if everything goes well, update the div with the response
              $('#result').html(responseText);
          }
      });
    return false; // important: prevent the form from submitting
    });
  });

    $(document).ready(function() { // wait for the DOM to be ready
    $('#personal_email').submit(function() { // bind function to submit event of form
      $.ajax({
          type: $(this).attr('method'), // get type of request from 'method'
          url: $(this).attr('action'), // get url of request from 'action'
          data: $(this).serialize(), // serialize the form's data
          success: function(responseText) {
              // if everything goes well, update the div with the response
              $('#result').html(responseText);
          }
      });
    return false; // important: prevent the form from submitting
    });
  });


Jeg må gøre et eller andet forkert rent opbygningsmæssigt. Hvordan placerer jeg f.eks. 3 af den type scripts i en ekstern fil?
Vil det være en fordel at lave 3 eksterne filer og så lade den underside der benytter et script loade den eksterne fil, eller betyder det ingenting hastighedsmæssigt?
Avatar billede w13 Novice
19. april 2012 - 14:46 #1
Hej kfisker

Koden i din eksterne fil ser umiddelbart fin ud.

Hvordan henter du den ind på din side?

Jeg kan i øvrigt se, at koden bruger JQuery. Indlæser du JQuery-biblioteket på din side?

Det er altid en fordel at have så få eksterne filer som muligt, da hvert kald til en ny fil tager tid, så du gør det helt rigtigt lige nu. :)

Med venlig hilsen
Tobias
Avatar billede mireigi Novice
19. april 2012 - 16:26 #2
"Det er altid en fordel at have så få eksterne filer som muligt, da hvert kald til en ny fil tager tid, så du gør det helt rigtigt lige nu. :)" - w13 (#1)

Når det er sagt, er det en god ide at afgrænse indholdet til specifikke ting, som fx:
Generelt
Kalender
Video
osv.

Så du ikke har en 5000 linjers fil at kigge igennem, når én af tingene ikke virker.
Avatar billede AnyFellow Mester
19. april 2012 - 20:23 #3
Nu er jeg hjemme, så i kan lige så godt se de 3 funktioner jeg gerne vil have i én fil:

function cleardefault(el, defval) {
    if (el.defaultValue==el.value) {
        el.value = '';
        el.style.color='#000000';
    };
};

$(function() {
    $(\".add_shop\").click(function(evt) {
        evt.preventDefault();
        $.ajax({
            url: $(this).attr('href'),
            cache: false,
            datatype: \"html\",
            success: function(data){
                $(\"#shoppingbasket\").html(data)
            }
        });
    });
});

$(function () {
    var msie6 = $.browser == 'msie' && $.browser.version < 7;
    if (!msie6) {
        var top = $('#shoppingbasket').offset().top - parseFloat($('#shoppingbasket').css('margin-top').replace(/auto/, 0));
        $(window).scroll(function (event) {
            // what the y position of the scroll is
            var y = $(this).scrollTop();

            // whether that's below the form
            if (y >= top) {
                // if so, ad the fixed class
                $('#shoppingbasket').addClass('fixed');
            } else {
                // otherwise remove it
                $('#shoppingbasket').removeClass('fixed');
            }
        });
    } 
});


Jeg kalder filen fra <head> i min html via denne linje:

<script type="text/javascript" src="/js/func_lib.js"></script>
Avatar billede olebole Juniormester
19. april 2012 - 20:28 #4
<ole>

#1: "Indlæser du JQuery-biblioteket på din side?"

/mvh
</bole>
Avatar billede AnyFellow Mester
19. april 2012 - 20:33 #5
Ja, jeg indlæser JQuery på min side.

Mine funktioner virker fint hvis jeg sætter dem ind i <body> på min side i <script type=\"text/javascript\"></script> tags, i stedet for at have dem i min js-fil.
Avatar billede olebole Juniormester
19. april 2012 - 20:48 #6
Så fungerer de med garanti også i en ekstern fil. Jeg må formode, stien i dit script tag er forkert
Avatar billede olebole Juniormester
19. april 2012 - 20:49 #7
Prøv at lægge et link til siden, så vi kan se, hvad du laver
Avatar billede w13 Novice
19. april 2012 - 21:02 #8
Husker du, at JQuery skal inkluderes, inden du inkluderer dine funktioner?

Ellers vil funktionerne fejle, fordi de ikke kan finde JQuery, som de er afhængige af.
Avatar billede olebole Juniormester
19. april 2012 - 21:09 #9
#8: I så fald bør spørger helt klart lære, at man altid har fejlmeddelelser slået til, når man udvikler - for det udløser en JS-fejl  =)
Avatar billede AnyFellow Mester
20. april 2012 - 11:26 #10
*Dooh* Det er fordi jeg kalder min eksterne fil før JQuery.

Problemer er løst. Det er øjnene man først bliver blind på.

Jeg synes en pointdeling må være fair.
olebole...> Læg svar hvis du ønsker point.

Tak for hjælpen begge :)
Avatar billede olebole Juniormester
20. april 2012 - 12:26 #11
Ellers tak, jeg samler ikke point. Det må være andre, der tager sig af dem  =)
Avatar billede w13 Novice
20. april 2012 - 13:31 #12
Så lidt! :) Og tak for point!
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