Ответы пользователя по тегу JavaScript
  • Возможно ли получить всех вложенных детей?

    @lem_prod
    var pChilpren = document.querySelectorAll('Parent *');


    или

    var parent = document.getElementsByTagName('Parent'); //в случае если только один парент, вообще лучше через id 
    var child = parent.querySelectorAll('*');
    Ответ написан
  • Какой функцией "изменить" найденную с помощью RE часть текста?

    @lem_prod
    рабочий код писать не буду, опишу логику
    в переменную получить тело страницы var body = document.body.innerHTML
    по регулярному выражению ищем числа с количеством знаков после точки больше 3 /\d+\.\d\d\d\d+/g каждое найденное выражение заменяешь на округленное
    вот в помощь https://learn.javascript.ru/regexp-methods#str-rep...

    ну и потом обновляешь тело документа
    Ответ написан
    Комментировать
  • Почему странно работает цикл?

    @lem_prod
    var _a = document.querySelectorAll('.a'),
          _b = document.querySelectorAll('.b');
    
    for(var i = 0; i < _a.length; i++){
          _a[i].addEventListener('click', function(){console.log( _b[i] ); },false);
          _b[i].addEventListener('click', function(){console.log( _a[i] ); },false);
    }


    цикл идет 0 -> true, 1 - > true ... 3 - false( 3 < 3), потом когда вызывается функция console.log( _a[i]) оно ищет "i", находит собственно 3, а _a[3] у нас нет, только _а[0], _а[1], _а[2]

    обратите внимание, что вы добавляете НЕ:
    function(){console.log( _b[0] )
    function(){console.log( _b[1] )
    function(){console.log( _b[2] )


    а:
    function(){console.log( _b[i] )
    function(){console.log( _b[i] )
    function(){console.log( _b[i] )


    и эту "i" оно ищет потом, при вызове.

    Отвечаю на комментарий, для примера вот код:

    var l = 3;
    for (var i = 0, i < l; i = i + 1) {
    console.log(i); //0, 1, 2
    }
    
    console.log('после цикла:' + i); //3


    лучше всего запустите отладчик в консоле, и проследите все это...
    происходит следующее, первый заход "и" , "и" меньше "л"(правда), увеличивается "и" на одни, но в скобки попадает старое значение....как то так если на пальцах...
    тоесть, когда у вас выполняется 3 раз("и" == 2), оно увеличивает "и" на 1, то есть "и" == 3, но когда инструкция "и" меньше "л" не сработает, цикл дальше не пойдет, но и уже увеличена, потому что прибавление произошло в конце прошлого цикла.
    Ответ написан
    2 комментария
  • Тему диплома (сайт или приложение на телефон)?

    @lem_prod
    сделай какую то рисовалку типо, и выглядит красиво, и в вебе организовать легко, и функционал будет...а с canvas это не столь сложно.
    Ответ написан
  • Это правда что для AJAX лучше использовать метод GET а не POST т.к. он быстрее?

    @lem_prod
    первое, "GET - это запросы на получение, POST - это отправка", это высказывание условно, и сделано для того, что бы с имя запроса ассоциировалось с именем, НО ни что не мешает во первых, отправлять в "гет" данные(но они ограничены 2048 символами), делать "постом" запрос, при чем, "пост" запрос может точно так же отправлять данные в адресной строке.
    в итоге все зависит от того, как запрограммирован сервер, и ни что не запрещает написать, что "вот если с это строки приходит гет запрос, ничего не отдавать и сохранить данные которые пришли"

    второе, все общение между сервером и клиентом происходит в виде строк, в итоге неважно, гет это или пост, все будет в виде строк, НО вот этих строк в посте, как правило, больше, собственно по этому теоретически пост медленнее, но только потому что, как правило, передает больше данных.

    Мне вообще нужно загрузить с сервера большущий кусок простого текста, может подскажите какой метод лучше использовать?
    пост

    Да и ещё насколько я понял если использовать GET метод для AJAX запроса ведь останется ещё и URL с окончанием ?param1=value ?
    этот url и есть собственно запросом, так сказать "нельзя что-то спросить молча", эти строи и есть "то, что клиент "говорит" серверу"

    Получается с ним нужно будет что то делать? (прятать от поисковика и любопытных пользователей).
    прятать ничего не нужно, нужно сделать проверку на сервере, что запрос корректный, и никакой умник ничего лишнего не дописал.
    Ответ написан
  • NW.js vs Electron?

    @lem_prod
    С точки зрения производительности, они не сильно отличаются, собранные программы, будут занимать примерно одно и тоже количество памяти, тут скорее дело вкуса, NW.js связывается через package.json с главным *.html файлом, к которому подключается конфигурационный *.js, помоему все так если мне не подводит память, в elecnton связь тоже через *.json но ссылается непосредственно на конфигурационный *.js, который в свою очередь открывает окна и т.д.
    грубо говоря в NW.js главный .html файл, а в Electon .js
    я уже не помню особенностей первого, но знакомился в одно время с обоим платформами, и Electron мне показался на порядок логичнее, поэтому выбрал его, но чисто теоретически, один и тот же функционал можно реализовать и там и там.
    Ответ написан
    Комментировать
  • Как вернуть из асинхронных функции результат?

    @lem_prod
    конкретно по скрипту писать не буду, потому что не совсем понял, что та происходит, но попробую объяснить по поводу асинхронности, когда запускается асинхронная функция, в нее передаются агрументы(их количество бывает разным, в зависимости от функции) и последним аргументом callback-функция, в переводе, обратный звонок, вот эта функция имеет доступ к результатам выполнения предыдущей, и она может делать с этим результатом, что нужно, либо вернуть результат в общий поток, где он обработается, передаль другой функции, отослать результат браузеру и т.д. ...
    Ответ написан
    Комментировать
  • Как правильно менять тип переменной?

    @lem_prod
    тут вопрос скорее предпочтения, и понятности кода, например у меня есть переменная с числом var a = 100; пускай, и мне ее надо преобразовать в строку, варианты использовать toString() или, как как я знаю что при сложении строки с числом, число преобразуется в строку сделать: "" + a
    или если мне надо получить булево значение, я могу сделать !!a, но опять же,нужно понимать что происходит при этом.

    и тут уже просто важна логика, кому какой код понятнее...
    наверно любой программист, который работает с языками, со строгой типизацией, скажет что это преобразование полный бред и когда пытаются делать операции с разными типами, должна вызываться ошибка...отчасти он будет прав, но с другой стороны, если ты понимаешь, в каких ситуациях, как будет себя вести код, то сэкономишь много строк кода

    как заключение скажу, если есть желание в дальнейшем осваивать ЯП общего назначения, где зачастую строгая типизация, стоит уделять внимание преобразованию типов и не сильно привыкать к гибкости, потом менять свое представление будет сложно, НО с другой стороны, если вы собираетесь работать со скриптовыми языками, в частности в вебе, то конечно же надо понимать как они себя ведут и хорошо разобраться с преобразованием типов в разных ситуациях.
    Ответ написан
    Комментировать
  • В чем различие между?

    @lem_prod
    function superFunc (arg) {};

    function - запуск конструктора функции
    superFunc - имя функции
    () - переменные-аргументы
    {} - контекст выполнения
    получается сделали функцию с именем, аргументами и контекстом
    при этом вызов superFunc() идет по имени функции, хочу обратить внимание, что скобки по время вызова, это оператор вызова.

    var super = superFunc() - читаем справа налево, вызови функцию с именем superFunc и помести результат в переменную super.

    var super = new superFunc() - читаем справа налево, вызови функцию с именем superFunc как конструктор, создай с него объект который будет помещен в переменную super. Тут стоит обратит внимание, что функция нечего не возвращает, а создает объект по конструктору.
    Ответ написан
    Комментировать
  • Метод splice(). Какую ошибку я совершил?

    @lem_prod
    ты постоянно рандомишь число от 0 до 36, потом добавляешь в новый и вырезаешь....при этом длинна массива уменьшается, например ушло 4 с массива, в нем 32, а не 36, а рандом дает число больше 32...собственно его нет...место 36, используй длину массива, которая будет динамически изменяться при итерации...
    Ответ написан
    1 комментарий
  • Как удалить объект через функцию?

    @lem_prod
    var kill = function(obj) { // delete the object - does not work
    delete obj;
    }


    вызов kill(obj); удаляет объект, который находится в контексте самой функции проще говоря происходит примерно такое:

    есть var a = { ... };

    kill(a) /* obj = a; delete obj */ другими словами удаляет клона

    var kill2 = function(obj) { // replace with an empty object - does not work
    obj = {};
    }


    здесь объект очищается а не удаляется

    вопрос, чем встроенная функция не угодила? что должно происходить? просто delete a;

    а если через функцию:

    function kill_obj (obj) {
    detele window[obj];
    }
    
    kill_obj('str_name');
    Ответ написан
    2 комментария
  • Подгрузка изображений при скроле, как реализовать?

    @lem_prod
    в jquery есть уже готовые решения, но если я не ошибаюсь, суть работы в том что стоят теги картинки с размерами, но без src и обработчик на все картинки, что если скрол доходит до картинки, добавлять src...при этом надо взять во внимание, что при загрузке надо проверить какие картинки уже есть на экране и грузить их сразу.

    вот https://learn.javascript.ru/task/load-visible-img
    Ответ написан
    Комментировать
  • Книги для изучения JavaScript?

    @lem_prod
    в ближайшие годы js будет держать высокую планку 100%, на js(Node.js) уже можно писать полноценные десктопные утилиты, спасибо Electron... electron.atom.io есть список самых популярных прог.
    для начала однозначно https://learn.javascript.ru/ , лучше в рунете нету.
    Ответ написан
    Комментировать
  • Зачем переменным задаётся значение с помощью другой переменной в js?

    @lem_prod
    для того, что бы изменить значение в переменной, но сохранить старое значение

    попробуйте написать функцию для сортировки 3 чисел в порядке возрастания или наоборот, сразу станет понятно...
    Ответ написан
    Комментировать
  • Стоит ли писать сервер голосового общения на node.js?

    @lem_prod
    реально.
    русская документация 0.4.n свежее не найдешь https://github.com/kurokikaze/nodejs-docs-rus/tree...
    открываешь ее и оригинальную, есть пару хороших статей на хабре, обзор у Соракса и скринкаст от Ильи Кантора
    какие то книги вообще не советую, дельного нечего нету, слишком много лишнего.

    а и еще, советую познакомится с движком Electron от гитхаба
    Ответ написан
    3 комментария
  • Реальные задачи по js?

    @lem_prod
    https://screeps.com/ крутая вещь, связи с реальными задачами нет, но качество кода развивает, + весело.

    а по поводу реальных заданий, та что угодно, просто выберите тему и начните делать, сразу старайтесь систематизировать код, для начала лучше всего чистый JS, горстка появится "великов", сделайте один большой, получите свою библиотеку, потом будет мысль что это все уже реализовано до вас и можно взять готовое...

    реальная задача - браузерный Paint, вроде такого давно не видел)
    Ответ написан
  • ES6 или TypeScript? Что востребованней?

    @lem_prod
    Что лучше, молоток или кувалда? Кувалда? А если надо забить маленький гвоздик.

    А если по теме, то поверьте, будьте вы специалистом в своем деле, бы будете востребованы, ставьте вопрос, что вам больше по душе.
    Ответ написан
    Комментировать
  • Есть ли смысл переходить на изучение javascript?

    @lem_prod
    Вопрос в другом, зачем нужен js, сразу скажу, что нечего общего с java кроме названия он не имеет.

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

    если вам интересен js как инструмент разработки, то учите, лично я считаю язык очень перспективным, не один другой язык не развивается так стремительно как js.
    Ответ написан
    Комментировать
  • Как понять что находится в переменной?

    @lem_prod
    почитай про утиную типизацию, https://learn.javascript.ru/class-instanceof

    самая простая проверка на null
    if (x === null) {};
    Ответ написан
    4 комментария