Ответы пользователя по тегу JavaScript
  • Как создать рекурсию в pug с созданием списка из объекта?

    @Shannon
    Например, вот так, как вариант

    -
     var obj = {
      "label": "蟆",
      "children": [
        {
          "label": "虫"
        },
        {
          "label": "莫",
          "children": [
            {
              "label": "艹"
            },
            {
              "label": "旲",
              "children": [
                {
                  "label": "日"
                },
                {
                  "label": "大"
                }
              ]
            }
          ]
        }
      ]
     }
    
    mixin unpackKanji(obj)
      if(Array.isArray(obj))
        each item in obj
          +unpackKanji(item)
      else
        ul
          if(obj.children)
            li=obj.label
                +unpackKanji(obj.children)
          else
              li=obj.label
    
    +unpackKanji(obj)
    Ответ написан
    Комментировать
  • Как реализовать отправку файлов через Ajax?

    @Shannon
    На input(type='file') вешается функцию обработчик на событие 'change', например "uploadFiles"
    При вызове функции в this.files (даже без multiple, если только 1 файл, всё равно будет this.files) будут все добавленные файлы, их можно либо добавить в единую форму и отправить все вместе. Либо отправить по одному, каждый раз создавая новую форму

    function uploadFiles(e) {
        const formData = new FormData()
        for (let file of this.files) {
            formData.append('files', file)
        }
    
        const xhr = new XMLHttpRequest()
        xhr.upload.onloadstart = function () {
            console.log('Начали загружать')
        }
        xhr.upload.onprogress = function (event) {
            console.log(`Загрузили ${event.loaded} из ${event.total}`)
        }
        xhr.upload.onload = function () {
            console.log(`Всё отправлено`)
        }
        xhr.upload.onerror = function () {
            console.log('Произошла ошибка при отправке');
        }
    
        xhr.open("POST", '/upload')
        xhr.send(formData)
    
        xhr.onreadystatechange = function () {
            if (xhr.readyState === XMLHttpRequest.DONE) {
                if (xhr.status === 200) {
                    console.log('ok')
                }
                else {
                    console.log('error')
                }
            }
        }
    }
    Ответ написан
    Комментировать
  • Каков алгоритм создания мобильного приложения на html, css и js?

    @Shannon
    habrahabr.ru/post/257889 - по сути Framework7 самый простой, и один из самых быстрых фреймворков для html5 приложений
    Вначале набрасываете дизайн в html, потом к дизайне привязываете нужный код в js-файле. Ничего дополнительно изучать не требуется, чистый html + js

    Есть набор компонентов (кнопки, списки, диалоговые окна, выпадающие меню и т.д.) которые просто размещаете в html-файле, для каждого компонента есть инструкция как его вставить в html файл и как их привязать к js-коду. Всё это делается 1-2 строчками и выглядит как нативные элементы

    В статье немного устарела информация, в последней версии фреймворка много улучшений, а так же появилась полноценная поддержка android material design и ios 9 style, включая инструкцию как их переключать офф сайт framework7
    Ответ написан
    Комментировать