"Нет повести печальнее на свете, чем повесть о вопросе и ответе."

Моя есть веб разработчик. В основном Frontend, но, коль п̶р̶и̶ж̶м̶ё̶т̶ сложиться судьба, могу ещё на Node.js + Express + Sosket.io что-то настрочить.
Как и любой уважающий себя JS разработчик, так-же, считаю JS самым лучшим языком программирования во всём мире, во все времена и народы и искренне поражаюсь, когда узнаю, что какая-то очередная инновационная технология не использует JS.
Местоположение
Украина

Достижения

Все достижения (5)

Наибольший вклад в теги

Все теги (48)

Лучшие ответы пользователя

Все ответы (134)
  • Как защитить кнопку от автоматического клика?

    Aleksandr-JS-Developer
    @Aleksandr-JS-Developer
    Бери и делай
    "Можно легко отличить «настоящее» событие от сгенерированного кодом.
    Свойство event.isTrusted принимает значение true для событий, порождаемых реальными действиями пользователя, и false для генерируемых кодом.
    "
    (с) learn.javascript.ru

    подробнее (ru)
    Ответ написан
  • Как мне сделать одну переменную для нескольких ключей?

    Aleksandr-JS-Developer
    @Aleksandr-JS-Developer
    Бери и делай
    В вашем вопросе не понятно ничего. Попробуйте описать задачу, а не вашу реализацию. Это называется "Проблема XY".

    Судя по-всему, вам нужно сделать так, что-бы пользователь ответил на последовательные вопросы и вы получили ответ.
    Если да, то вы немного отклонились от правильного пути. 72 переменные? Это-же жесть.. А если вам потребуется добавить ещё одну секцию с шестью вариантами? 72 * 6 = 432. А если после этого ещё одну на, скажем, пять? 432 * 5 = 2 160 вариантов окончания опроса. 2 160 переменных. Вручную!
    Когда такое происходит (надо какой-то сложный, невероятно объёмный и непонятный кусок программы делать "руками") и вы не можете нагуглить автоматическое решение, то в 99.999% случаях вы делаете какую-то хрень и нужно очень серьезно подумать, есть ли другой путь. Программирование такая штука, что все подобные проблемы уже давно решены за вас, вам осталось только грамотно вставить их в своё приложение или, если решение совсем в пару строк, то грамотно написать самому. На крайний случай - по известному алгоритму

    Вам нужно:
    Создать массив с вопросами
    При выборе, в другой массив с ответами записываем ответ.
    Как только вопросы заканчиваются, у вас есть массив в ответами вида:
    [1, 3, 2]
    /*
     Как обрабатывать ответы? Очень просто.
     Например, [1, 3, 2] значит, что пользователь выбрал в первом вопросе второй вариант
     Во втором четвертый, в третьем третий. Итого: 
     
    [1, 3, 2] - значит
    Вопрос: Какой вид компьютерного устройства вы хотели бы приобрести?
    Ответ: Ноутбук
    
    Вопрос: Для чего чаще всего вы планируете использовать компьютер?
    Ответ: Для доступа в интернет
    
    Вопрос: Какой у вас бюджет?
    Ответ: 40000₽ - 50000₽
    */


    Если вопросная база растёт, то у вас нет напрягов, вы просто добавляете в массив вопросов объекты с вариантами ответов и заголовком вопроса. Это значит, что 2 160 переменных не потребуються.

    Вот, накидал вам код примерный >> link

    Полезные ссылки:
    Вопрос на Хабре про алгоритмическое мышление
    Учебник JavaScript (очень рекомендую, он на русском. Для понимания того кода, что я вам накидал )
    Ответ написан
  • Как правильно "Спрятать" мой js код на сервере?

    Aleksandr-JS-Developer
    @Aleksandr-JS-Developer
    Бери и делай
    Это смотря что за викторина. Одно дело, когда она проверяет знание истории с весёлой фразой в конце. Совсем другое, когда вы разыгрываете мерседес. Взламывается всё, что угодно - главное какой профит будет хакеру.
    В принципе, в первом варианте, ответы можно разбить по цифрам из юникода и хранить в цифрах.
    подробнее
    Каждой цифре можно прибавлять "шаг" (например, число 12) и парсить обратно в символы (это называется "Шифр Цезаря", только не с алфавитом, а с таблицей юникод. 99.9% любителей полазить в f12 уйдут с ничем или получат удовлетворение от "взлома" супернадёжного шифра и получат удовольствие от сайта не меньше, чем от весёлой фразы в конце викторины.
    Простая "hello world!" превращается в "104-101-108-108-111-32-119-111-114-108-100-33"

    Вот тут накидал пример: jsfiddle

    Во втором случае, вам надо понять, что НЕВОЗМОЖНО что-то спрятать в JS. Потому, что, в конце-концов, весь код целиком загружается в браузер. Любой, самый секретный, самый чудовищно-сложный, шифр как-то преобразуется в обычный текст. Для этого есть функция в вашем приложении. Злоумышленник просто залезет в код и использует вашу функцию для дешифровки.
    подробнее
    Поэтому, всё-же, нужен backend. С backend`а приходит вопрос и варианты ответов. Когда пользователь делает ввод, то на сервер идёт запрос, проверяется пользовательский ввод, и приходит ответ уже от сервера, верен ли ввод пользователя или нет. От сервера может даже сразу прийти страница, куда направлять пользователя, в зависимости от правильности его ввода. Для таких задач и был придуман backend вообще-то...


    Ссылки:
    String.fromCharCode()
    String.prototype.charCodeAt()
    Ответ написан
  • Как отличить класс от объекта?

    Aleksandr-JS-Developer
    @Aleksandr-JS-Developer
    Бери и делай
    Если у вас только объекты и классы, то проверка на typeof у класса вернет 'function', а у объекта 'object'

    class AwesomeClass {
      constructor(){}
    }
    
    console.log(typeof AwesomeClass, typeof {}) // function object

    В вашем случае это что-то типа этого
    const arr = [
    	class C0 {},
      class C1 {},
      class c2 {},
      {},
      {}
    ];
    
    arr.forEach( item => {
    
      if( typeof item === 'function' ){
        console.log( 'is a class' )
        // ...
    
      } else if( typeof item === 'object' ){
        console.log( 'is a object' )
        // ...
    
      } else {
        console.log( 'some else' );
      }
    
    });


    Ссылки:
    developer.mozilla.org
    Ответ написан
  • Как записать объект в ФАЙЛ JSON?

    Aleksandr-JS-Developer
    @Aleksandr-JS-Developer
    Бери и делай
    Смотря что вам нужно потом с этим файлом делать. Если вы хотите хранить его на машине пользователя, то это невозможно. Только генерить файл и давать пользователю на скачивание и потом просить его вставить файл назад на сайт в следующий раз.

    Если отправлять на сервер и потом читать там, то вам не нужно делать файл, вам надо преобразовать объект в JSON и отправить его через fetch к примеру.

    Если вам нужен файл для скачивания пользователю через JS, то тут сложнее. Тогда вам нужен FileReader.

    Судя по-всему, вам нужно хранить данные о пользователе на стороне пользователя, чтобы после перезагрузки страницы данные сохранялись? Если так, то вам нужен Localstorage.

    Ссылки:
    Localstorage
    Формат JSON, метод toJSON
    File и FileReader
    Ответ написан

Лучшие вопросы пользователя

Все вопросы (8)