Как удалить все комментарии из файла javascript? - PullRequest
1 голос
/ 09 июля 2020

У меня есть следующий код, с помощью которого вы можете загрузить файл Javascript, и он удаляет все комментарии из документа. Это прекрасно работает. Однако ниже у меня есть два textareas. В одном из них пользователь вставляет свой код, и в этом коде запускается та же функция для удаления всех комментариев, а обновленный код вставляется в другой textarea. Однако результат оказывается неопределенным. Что не так с моим кодом. Пожалуйста, помогите мне!

function fileUploaded() {
  var myUploadedFile = document.getElementById("myFile").files[0];
  var reader = new FileReader();
  reader.readAsText(myUploadedFile, "UTF-8");
  reader.onload = function(evt) {
    var documentNew = evt.target.result.replace(/(\r\n|\n|\r)/gm, "\n");

    document.getElementById("myFile").addEventListener("change", fileUploaded, false);

    var str = documentNew;
    var lines = str.split('\n');

    var filterred = lines.filter(function(line) {
      return line.indexOf('//') != 0;
    });

    filterred = String(filterred).replace(/;/g, "; \n");

    $("#answerDocument1").html(filterred);
  };
};
document.getElementById("myFile").addEventListener("change", fileUploaded, false);
$("#doc").keyup(function(evt) {
  var doc = $("doc").html();
  var documentNew = String(doc).replace(/(\r\n|\n|\r)/gm, "\n");

  var str = documentNew;
  var lines = str.split('\n');

  var filterred = lines.filter(function(line) {
    return line.indexOf('//') != 0;
  });

  filterred = String(filterred).replace(/;/g, "; \n");

  $("#answerDocument2").html(documentNew);
});
textarea {

  width: 100px;
  height: 100px;

}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<h3>Upload A Javascript Document</h3>
<input type="file" id="myFile">
<textarea id="answerDocument1"></textarea>
<br><br>
<hr>
<br><br>
<textarea id="doc"></textarea>
<textarea id="answerDocument2" readonly></textarea>

1 Ответ

0 голосов
/ 09 июля 2020

Я использовал ...

filterred = filterred.join("").replace(/;/g, "; \n");

Вместо ...

filterred = String(filterred).replace(/;/g, "; \n");

Потому что filterred - это массив, а не строку, и если вы конвертируете его в строку, он будет соединен запятыми.

Я также использовал $("#doc").val(); вместо $("doc").html();, потому что это значение <textarea></textarea> что я получаю. Это удаляет неопределенное сообщение go.

function fileUploaded() {
  var myUploadedFile = document.getElementById("myFile").files[0];
  var reader = new FileReader();
  reader.readAsText(myUploadedFile, "UTF-8");
  reader.onload = function(evt) {
    var documentNew = evt.target.result.replace(/(\r\n|\n|\r)/gm, "\n");
    var str = documentNew;
    var lines = str.split('\n');

    var filterred = lines.filter(function(line) {
      return line.indexOf('//') != 0;
    });

    
    filterred = filterred.join("").replace(/;/g, "; \n");
    $("#answerDocument1").html(filterred);
  };
};
document.getElementById("myFile").addEventListener("change", fileUploaded, false);
$("#doc").keyup(function(evt) {
  var doc = $("#doc").val();
  var documentNew = String(doc).replace(/(\r\n|\n|\r)/gm, "\n");
  var str = documentNew;
  var lines = str.split('\n');

  var filterred = lines.filter(function(line) {
    return line.indexOf('//') != 0;
  });

  filterred = filterred.join("").replace(/;/g, "; \n");
  $("#answerDocument2").html(filterred);
});
textarea {
  width: 150px;
  height: 150px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<h3>Upload A Javascript Document</h3>
<input type="file" id="myFile">
<textarea id="answerDocument1"></textarea>
<br><br>
<hr>
<br><br>
<h3>Paste Code</h3>
<textarea id="doc"></textarea>
<h3>Copy Formatted Code</h3>
<textarea id="answerDocument2" readonly></textarea>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...