2010-05-26 3 views
1

Мой вопрос в том, есть ли способ сделать этот код более эффективным или написать его простым способом? javascript кстати.Лучший способ упростить этот код, более эффективно

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 
} 

ответ

10

Это можно сделать гораздо более элегантна:

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

В JavaScript целые значения автоматически преобразуются в строки, если в сочетании с ними. Оператор + объединяет строки.

РЕДАКТИРОВАТЬ: Последующий ответ на ваш вопрос для проверки, является ли tempvar целым числом. Один Possiblity проверить это (есть и другие модификации округлить код):

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 ;) 
    } 
} 

Первый if оператор пытается лечить tempvar1 как целое значение и только продолжается, если это работает.

+0

Ах, это так просто. Как я могу сказать (если (tempvar1 является целым числом и меньше 20))? или это проверка не нужна, потому что, если они перепутались с какой-либо частью вашего кода, они могли бы возиться со всем этим? javascript очень небезопасен? – Derek

+1

+1 для фактической реализации той же функциональности, что и в вопросе (в отличие от нескольких других ответов, которые все идентичны друг другу). Еще один момент будет заключаться в том, что если есть случай 'default', он будет обрабатываться здесь' else'. – eyelidlessness

+0

О необходимости проверки: если tempvar1 поступает с пользовательского ввода, вы должны обязательно использовать чеки и идти на безопасность. Но если tempvar1 есть f.e. какой-то счетчик циклов, о котором вы полностью осведомлены, это необязательно. – schnaader

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

Как насчет:

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

Вам не нужно переключатель заявление:

currentSlide = 'slide' + tempvar1; 
showaslide('ppslide' + tempvar1); 
Смежные вопросы