Оператор переключения не проходит во всех случаях - преобразователь Javascript PT в html - PullRequest
0 голосов
/ 30 мая 2020

Итак, я пытаюсь создать конвертер сценариев, который превращает простой текст в HTML. Вся идея в том, что есть два текстовых поля, одно для ввода пользователя, а другое - для вывода. Я пытаюсь использовать для этого оператор switch, но по какой-то причине переключатель переходит только в первый случай, а не в остальные. Таким образом, он выводит <br /> в нужных местах, но ничего не делает для других случаев. Но, насколько я понимаю, он должен go проходить через каждый случай в коммутаторе.

(Примечание: я создал этот сценарий в python, используя большое количество операторов if / else)

<script>
  var btn = document.querySelector('.btn')
  btn.addEventListener('click', converter);

  function converter(){
    var text = document.querySelector('.in_txt').value;
    var text_input = text.trim();
    var output_html='';
    var counter;
    var hey = 0;

    if(text_input.length > 0){
      output_html+='<p>'; //begin by creating paragraph
      for(counter=0; counter < text_input.length; counter++){
        switch (text_input[counter]){
          case '\n':
            output_html+='\n<br>';      
            break;

          case ' ':
            output_html+=' ';                                                   
            break;

          case '\t':
              output_html+=' ';
              break;

          case 'FIRSTNAME':
              output_html+='{% if cons.firstname %}{{cons.firstname}}{% else %}{% endif %}';
              break;

          case '—':
            if(text_input[counter-1] != '—')
              output_html+='&mdash;';
            break;

          case ' - ':
            if(text_input[counter-1] != ' - ')
              output_html+='&mdash;';
            break;

          case '[image]':
            if(text_input[counter-1] != '[image]')
              output_html+='<table role="presentation" border="0" cellspacing="0" cellpadding="0" width="100%">\n\t<tbody>\n\t\t<tr align="center">\n\t\t\t<td>\n\t\t\t\t<center>\n\t\t\t\t\t<a href="link"> <img border="0" style="display: block; margin: 0  auto; height: auto; width: 100%; min-width: 300px; max-width: 560px;" src="image" alt="alt"></a>\n\t\t\t\t</center>\n\t\t\t</td>\n\t\t</tr>\n\t</tbody>\n</table>\n';
            break;

          case '\n':
            if(text_input[counter-1] != '\n')
              output_html+='<br />';
            break;              

          default:
            output_html+=text_input[counter];

        }  
      }
      output_html+='</p>'; //finally close paragraph
      }
    document.querySelector('.out_html').value = output_html; // display output html 
  }


</script>

1 Ответ

1 голос
/ 30 мая 2020

text_input [counter] всегда хранит один символ, например 'a', '' или символ новой строки ('\ n'), поэтому он никогда не будет равен "FIRSTNAME", "" [image] ". как и любая другая строка с более чем одним символом. Из-за того, что ваши условия, содержащие более одного символа, никогда не будут удовлетворены в приведенном выше коде.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...