Switch语句并非在所有情况下都适用-Javascript PT到html转换器

问题描述 投票:0回答:1

因此,我试图创建一个将纯文本转换为HTML的脚本转换器。整个想法是,有两个文本框,一个具有用户输入,另一个是输出。我正在尝试使用switch语句来执行此操作,但是由于某种原因,该开关只会转到第一种情况,而不会转到其余情况。因此,它在正确的位置输出<br />,但在其他情况下不执行任何操作。但是据我所知,它应该在切换中遇到的所有情况。

(注意,我使用大量的if / else语句在python中创建了此脚本)

<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>
javascript switch-statement
1个回答
0
投票

text_input [counter]总是存储单个字符,例如'a',''或换行符('\ n'),因此它永远不会等于“ FIRSTNAME”,“” [image]“以及任何其他一个以上字符的字符串。由于这些原因,您的条件包含更多字符,因此上面的代码将永远无法满足。

© www.soinside.com 2019 - 2024. All rights reserved.