Я не могу напечатать список на экране - PullRequest
0 голосов
/ 14 февраля 2019

Я хочу перечислить свои данные в формате json как флажок.Я написал этот код.Я печатаю таким образом.Я не знаю, где я делаю неправильно.Я получаю данные JSON из файла Excel.textarea выходит как «неопределенный неопределенный».Не могли бы вы помочь?

КОД HTML:

<div class="example">
  <form enctype="multipart/form-data">
    <input id="upload" type=file name="files[]">
  </form>

  <textarea 
    id="data" 
    class="form-control text-area-style" 
    rows=35 
    cols=120>
  </textarea>
</div>

КОД JS:

function ExcelToJSON() {
  var list;
  document.getElementById("upload").addEventListener("change", handleFileSelect, false);
  this.parseExcel = function(file) {
    var reader = new FileReader();
    reader.onload = function(e) {
      var data = e.target.result;
      var workbook = XLSX.read(data, {
        type: "binary"
      });
      workbook.SheetNames.forEach(function(sheetName) {
          // Here is your object
          var XL_row_object = XLSX.utils.sheet_to_row_object_array(workbook.Sheets[sheetName]);
          var json_object = JSON.stringify(XL_row_object);
          list = JSON.parse(json_object);
          console.log(list);
          jQuery().val(json_object);

          list.forEach(function() {
              $('#data).append(' < input name = "accesories"
                type = "checkbox"
                value = "'+list.id+'" / > '+list.name+' < br / > ');
              });
          })
      };

      reader.onerror = function(ex) {
        console.log(ex);
      };

      reader.readAsBinaryString(file);
    };

  };

  function handleFileSelect(evt) {
    var files = evt.target.files; // FileList object
    var xl2json = new ExcelToJSON();
    xl2json.parseExcel(files[0]);
  }

1 Ответ

0 голосов
/ 14 февраля 2019
list.forEach(function() {
              $('#data).append(' < input name = "accesories"
                type = "checkbox"
                value = "'+list.id+'" / > '+list.name+' < br / > ');
              });
          })

список не имеет атрибутов id и name (не определены), вы перебираете список, но вы не используете повторяющийся элемент .

list.forEach(function(item) { // <= forEach calls for every list item this function with the item as argument
              $('#data).append(' < input name = "accesories"
                type = "checkbox"
                value = "'+item.id+'" / > '+item.name+' < br / > ');
              });
          })

Подсказка: Используйте сборку в отладчике браузера, это очень помогает для понимания JS.

С помощью Chrome нажмите F12 и установите точку останова в функции foreach, затем выполните свой код, и он сломаетсязаданную строку, тогда вы увидите все переменные в вашей области видимости.(В вашем случае вы увидите, что список является массивом и не имеет идентификатора и имени в качестве свойства)

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