2016-10-21 5 views
0

Есть ли способ запустить проверку переменной в функции на каждом случае, не набирая ее каждый раз?Если оператор в каждом случае внутри коммутатора

Javascript

function htmlParse(type) { 
    var returnString = ""; 
    $('#drag-drop > .draggable').each(function() { 
     var item = $(this).attr('id'); 
     switch(item) { 
      case 'bread-top': 
       returnString += '<html>'; 
       if (type == 'string') 
        returnString += '\n'; 
       break; 
      case 'bread-bottom': 
       returnString += '</html>'; 
       if (type == 'string') 
        returnString += '\n'; 
       break; 
      case 'turkey': 
       returnString += ''+ 
          ' <body>\n'+ 
          '  Your website content goes here.\n'+ 
          ' </body>'; 
       if (type == 'string') 
        returnString += '\n'; 
       break; 
     } 
    }); 
    return returnString; 
} 

В этом примере я хочу запустить if (type == 'string')... на каждом конкретном случае в переключателе, не имея на самом деле вводить его каждый раз.

Возможно, это потому, что уже поздно, но я не могу придумать способ сделать это, не создавая каждый случай из массива.

+2

Положить его после 'switch'? –

+1

Замечание: ** Строго ** рекомендуется использовать '{}' последовательно, даже если (на данный момент) блок содержит только один оператор. –

+0

@Someprogrammerdude - Следует отметить, что мне нужно разбить строку после каждого случая. –

ответ

2

Просто поместите его послеswitch:

var item = $(this).attr('id'); 
switch (item) { 
    case 'bread-top': 
     returnString += '<html>'; 
     break; 
    case 'bread-bottom': 
     returnString += '</html>'; 
     break; 
    case 'turkey': 
     returnString += '' + 
      ' <body>\n' + 
      '  Your website content goes here.\n' + 
      ' </body>'; 
     break; 
} 
if (type == 'string') 
    returnString += '\n'; 

Если вам нужны случаи несовпадающих не делать этого, добавить default и использовать флаг:

var item = $(this).attr('id'); 
var flag = true; 
switch (item) { 
    case 'bread-top': 
     returnString += '<html>'; 
     break; 
    case 'bread-bottom': 
     returnString += '</html>'; 
     break; 
    case 'turkey': 
     returnString += '' + 
      ' <body>\n' + 
      '  Your website content goes here.\n' + 
      ' </body>'; 
     break; 
    default: 
     flag = false; 
     break; 
} 
if (flag && type == 'string') 
    returnString += '\n'; 
+1

Вот оно. По какой-то причине я даже не мог постигнуть проверку после переключения, но внутри цикла .each(). Вот почему я должен спать и снова смотреть утром, прежде чем задавать глупые вопросы. Очень ценится. –

1

Так как ваш делают то же самое для всех случаев, когда вы можете вытащить его из футляра-переключателя

заменить

return returnString; 

с

return type === "string" ? returnsString +"\n" : returnString; 

Имейте в виду, что если вы не инициализирует типа где-то еще, то условие будет всегда терпит неудачу, и если returnString никогда не может быть чем-то, чем строка вероятно, вы должны найти лучшее название для Это.

Смежные вопросы