Ответы пользователя по тегу JavaScript
  • Почему когда я вешаю событие клика на кнопку, то при загрузке она сразу срабатывает?

    @Karpion
    Добавлю свои пять копеек для лучшего понимания вопроса.

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

    @Karpion
    Я не понял, какие исходные данные м.б. для задачи. И по каким принципам это надо отобразить.
    Ответ написан
  • Как запретить сохранение полигона, если полигон пересекается с ранее созданными?

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

    @Karpion
    Вам надо сначала сложить три параметра n141 + s14 + n142 как строки. Если n141 и n142 являются числами - то не надо преобразовывать их в числа, а лучше оставить в виде строк.

    А затем - надо заставить JS вычислить строку как выражение. Для этого нужен eval - всё как TAbrahamyan написал, но не разъяснил.
    Ответ написан
    Комментировать
  • Как проверить что в переменной находится регулярное выражение?

    @Karpion
    Практически любая строка м.б. рег.выражением.
    Ответ написан
  • Рекурсия в JavaScript?

    @Karpion
    Есть вариант "главная программа по очереди вызывает функции". Хорошо бы создать массив со ссылками на эти функции и вызывать их в цикле. Желательно вызывать не просто в цикле, а только по необходимости, чтобы не грузить процессор.

    Можно вызывать функции как Вы хотите - через setTimeout(), как советовали выше. Тогда ничего не накапливается. Но это не особо хороший вариант, причины тоже объяснены выше.

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

    @Karpion
    Нехилые у Вас запросы... Даже обратная задача типа "преобразовать циферное число в словесное" - уже весьма нетривиальна; и это при том, что любая последовательность цифр является корректным числом.

    А с Вашей задачей - надо предусмотреть некорректные варианты типа "одна миллион" или "пятьдесят триста" (при том, что "триста пятьдесят" - совершенно нормально). Ну и надо бы определиться с диапазоном возможных чисел.
    Ответ написан
    Комментировать
  • Возможно ли получить список файлов?

    @Karpion
    А где именно "есть папка media c музыкой" - на машине, где работает браузер; или на сервере, откуда загружен скрипт?
    Ответ написан
    2 комментария
  • Поиск технологии?

    @Karpion
    Задача поставлена так невнятно, что осмысленного ответа быть не может.
    Ответ написан
    3 комментария
  • Как сделать игру Камень-Ножницы-Бумага на js?

    @Karpion
    Мне кажется, userValue содержит строку, а не число. Соответственно, они никогда не м.б. === числу. Наверно, там надо ==, а не === ...

    Ещё в операторах if - надо расставить скобки. А то полагаться на приоритет операций - так себе идея.

    И ещё есть хорошая оптимизация: надо из userValue вычесть progValue. И анализировать разность оператором switch; или есть альтернативы...
    Ответ написан
  • Есть ли библиотека на javascript, которая может находить сложные интегралы и брать обратную функцию?

    @Karpion
    Вообще-то, Ваши запросы требуют огромную базу данных. И даже при ней - большинство задач не имеют решения: sin(x/x не интегрируется и не имеет обратной функции - точнее, всё можно, но оно не выражается в элементарных функциях.
    Ответ написан
    Комментировать
  • Как правильно реализовать шанс выпадения?

    @Karpion
    Простите, а почему у Вас сумма процентов = 180% ? Чуров, перелогиньтесь!

    Если проценты круглые, то можно примерно так:
    Делаем массив {1,1,1,2,2,2,2,3,3,4}. Делаем случайное целое число от 0 до 9 (берём float случайное число от 0 до 1, умножаем на 10, берём целую часть с округлением вниз). Используем это число как индекс в массиве, получаем номер выпавшего предмета.

    Если проценты не круглые, то делаем float случайное число от 0 до 1. Потом по очереди отнимаем от него проценты вероятности выпадения предметов, пока не станет <=0 .

    Если предметов очень много - то в массив записываем не сами вероятности, а сумму предшествующих вероятностей - и ищем методом половинного деления. Мне лень расписывать - но по отдельной просьбе могу набросать пример.
    Ответ написан
  • Может ли while обработать несколько условий?

    @Karpion
    Покажите, что именно у Вас не работает.

    while работает строго с одним условием. Однако, условие м.б. составленным из частей, объединённых операциями "и", "или", etc.

    Учтите, что операции | и & - побитовые. А для логических операций обычно применяют || и &&.
    И вообще, читайте учебник.

    И не жалейте скобок - не надейтесь на приоритет операторов.
    Ответ написан
  • Как организовать распределённый брутфорс?

    @Karpion
    На хостинге делается база данных, где лежат диапазоны паролей. Распределённые машины делают SQL-запрос "забрать любой свободный диапазон и пометить его взятым". По окончании перебора этого диапазона - надо "пометить диапазон как обработанный".
    Ответ написан
    Комментировать
  • Как обойти граф не зацикливаясь на связи одного узла с другим?

    @Karpion
    Алгоритм зависит от ситуации и от организации графа.

    Если нам надо выяснить наличие электричества с нуля для уже построенной сети:
    1. Все работающие электростанции считаются - имеют электричество.
    2. Перебираем линии, подключённые к работающим электростанциям; их надо собирать в отдельную очередь. Каждый дом на конце линии, который ещё не в списке - заносим в список имеющих электричество.
    3. При добавлении каждого дома - в очередь заносятся линии, подключённые к этим домам.
    4. Когда очередь стала пустой - список построен окончательно.


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

    Если включается электростанция - то запускаем поиск от неё.

    А вот если рвётся линия или отключается электростанция - то придётся строить список с нуля.

    PS: Есть алгоритмы динамической маршрутизации пакетов в сетях передачи данных (в т.ч. в Internet). Они умеют чётко обрабатывать добавление и удаление узлов и связей между узлами. Но они хранят намного больше информации - т.е. такие алгоритмы требуют больше памяти.
    Ну и надо добавить, что эти алгоритмы предназначены для распределённого выполнения на узлах, причём связь между узлами может отсутствовать.
    Ответ написан
    Комментировать
  • Как получить имя дня недели последнего дня месяца?

    @Karpion
    Я советую почитать мануалы по юниксовой программе date - она как раз выделывает такие манипуляции. А разработчики JS наверняка близки к Unix.

    Дата "последний день этого месяца", КМК, определяется как "вчера(первое число следующего месяца)". При этом есть проблема с выходом на следующий год...
    Ответ написан
  • Как сделать canvas цикличным?

    @Karpion
    А как именно логотип рисуется?

    Можно тупо сделать так:
    1. привести координаты логотипа к виду, где левый верхний угол логотипа находится в области канваса - прибавляя или вычитая размер канваса;
    2. нарисовать логотип четыре раза: на нужном месте, левее на размер канваса, выше на размер канваса и левее-ниже на размер канваса (размер канваса берётся по соответствующей координате).
    Я понятно объяснил?

    PS: Можно проверять необходимость рисовать дополнительные копии логотипа.
    Ответ написан
    Комментировать
  • Выделить ячейки таблицы и объединить (как в Excel)?

    @Karpion
    При увеличении colspan и rowspan - надо удалять лишние ячейки справа и внизу.

    Допустим, у меня есть таблица 10x10, т.е. 100 ячеек. Если я делаю в ней ячейку 3x4 - то она занимает 12 мест, т.е. надо удалить 11 ячеек.Если не удалить - то ячейки "съедут", увеличенная ячейка из "потеснит" вправо (всегда только вправо).
    Ответ написан
    3 комментария
  • Что писать в return?

    @Karpion
    Как правило, в таких случаях возвращают код ошибки: 0 если нормально, что-то другое если одна из функций изменения стилей-классов заартачилась.
    Ответ написан
    Комментировать
  • Регулярка на url с user_id?

    @Karpion
    В выражении /^[a-zA-Z0-9_]+$/ - regex находится внутри слешей, т.е. само выражение = ^[a-zA-Z0-9_]+$.
    Первый символ этого выражения ^ означает "начало строки"; а последний символ этого выражения $ означает "конец строки".
    Если Вы хотите добавлять в выражение что-то ещё (тут Вы добавляете /info/), то символы начала и конца строки надо прижимать к краям. А внутри выражения (не по краям) их быть не должно.
    Ответ написан
    Комментировать