2010-05-26 13 views
1

Ma question est, est-il un moyen de rendre ce code plus efficace ou l'écrire d'une manière simple? javascript au fait.Meilleure façon de simplifier ce code, plus efficace

switch (tempvar1) { 
    case 1: 
    currentSlide = 'slide1'; 
    showaslide('ppslide1'); 
    break; 
    case 2: 
    currentSlide = 'slide2'; 
    showaslide('ppslide2'); 
    break; 
    case 3: 
    currentSlide = 'slide3'; 
    showaslide('ppslide3'); 
    break; 
    case 4: 
    currentSlide = 'slide4'; 
    showaslide('ppslide4'); 
    break; 
    case 5: 
    currentSlide = 'slide5'; 
    showaslide('ppslide5'); 
    break; 
    case 6: 
    currentSlide = 'slide6'; 
    showaslide('ppslide6'); 
    break; 
    // 20 total cases 
} 

Répondre

10

Cela peut être fait beaucoup plus élégante:

if (tempvar1 <= 20) { 
    currentSlide = 'slide' + tempvar1; 
    showaslide('ppslide' + tempvar1); 
} 

En JavaScript, les valeurs entières sont automatiquement converties en chaînes si elle est combinée avec eux. L'opérateur + concatène les chaînes.

EDIT: Suivi de votre question de commentaire pour vérifier si tempvar est un nombre entier. Une possibilité pour vérifier ce (il y a également d'autres modifications pour arrondir le code):

if (!isNaN(parseInt(tempvar1))) { 
    if (tempvar1 >= 1) && (tempvar1 <= 20) { 
    currentSlide = 'slide' + tempvar1; 
    showaslide('ppslide' + tempvar1); 
    } else { 
    // Some error handling or default case here if needed 
    // thx to eyelidlessness ;) 
    } 
} 

La première déclaration if essaie de traiter tempvar1 comme une valeur entière et continue que si cela fonctionne.

+0

Ah, il est si simple. Comment le ferais-je dire (si (tempvar1 est un nombre entier et est inférieur à 20))? ou est-ce qu'un chèque comme celui-ci n'est pas nécessaire parce que si ils ont foiré avec n'importe quelle partie de votre code ils pourraient jouer avec tout cela? est javascript très non sécurisé? – Derek

+1

+1 pour avoir réellement implémenté la même fonctionnalité que dans la question (contrairement à plusieurs autres réponses qui sont toutes identiques les unes aux autres). Un point supplémentaire serait que s'il y a un cas 'default', il serait traité dans un' else' ici. – eyelidlessness

+0

A propos de la nécessité de la vérification: Si tempvar1 provient de l'entrée de l'utilisateur, vous devez absolument utiliser les contrôles et aller pour la sécurité. Mais si tempvar1 est f.e. un compteur de boucle dont vous êtes pleinement conscient, cela n'est pas nécessaire. – schnaader

8
currentSlide = 'slide' + tempvar1; 
showaslide('ppslide' + tempvar1); 
2

Que diriez-vous:

currentSlide = 'slide' + tempvar1; 
showaslide('ppslide' + tempvar1); 
3

Vous n'avez pas besoin l'instruction switch:

currentSlide = 'slide' + tempvar1; 
showaslide('ppslide' + tempvar1);