Ответы пользователя по тегу HTML
  • Как остановить выполнение setTimeout на 2 шаге?

    @alexalexes
    Можно.
    function highlightcurrent(items, index) 
    {
      if(index != 2) // выходим из функции, если достигли определенного индекса
      {
        items.removeClass("highlightcurrent");
        items.eq(index).addClass('highlight');  
        items.eq(index).addClass('highlightcurrent');   
        setTimeout(function()
        {
          highlightcurrent(items, index + 1)
        }, 1000);
      }
    }
    
    highlightcurrent($('.progress-page-tabs-col'), 0);
    Ответ написан
    3 комментария
  • Как получить id компонента(html) c помощью php?

    @alexalexes
    чтобы записать в базу данных данные мне нужен id

    Насчет записать в БД, нужно понимать две различные ситуации:
    а) вставка записи;
    б) обновление записи.
    Для вставки id передавать и знать не нужно, ключик сам должен генерироваться автоинкрементом или соответствующим триггером на insert.
    Для обновления записи, естественно, нужно передавать какой-нибудь идентификатор или уникальную метку, чтобы однозначно можно было провести update с параметром. В примитивнейшем случае в качестве такой метки будет выступать идентификатор. Его можно передавать скрытым полем и этого будет достаточно.
    <form action="" method="POST">
    <input type="hidden" name="id" value="5"/>
    <input type="sabmit" value="Отправить"/>
    </form>

    На стороне сервера имя и значение поля также отыскивается во входящих массивах, как и другие вводимые поля:
    $id = $_POST['id']; // каким методом отправили форму, таким и принимаем на сервере - все просто.
    Ответ написан
    Комментировать
  • Почему в Firefox не подгружаются изображение пока не нажмешь F12?

    @alexalexes
    У вас на странице куча миниатюр на 2500x2500 по ~1Мб каждая.
    Идет гонка, кто быстрей загрузится: скрипты или картинки.
    Скрипты находятся в конце, и они последние начинают загрузку.
    Такое расположение скриптов рекомендуют разработчики Google.
    Еще они рекомендуют делать упрощенный функционал сайта, пока скрипты не вступили в свою силу после того, тогда как загрузятся.
    Что требуется этому сайту:
    1) Создать и наладить отображение упрощенного стиля;
    2) Найти баланс в размере миниатюр.
    Ответ написан
  • Что быстрее градиент или изображение?

    @alexalexes
    Это не вопрос быстродействия, а вопрос адаптации под различные браузеры.
    Если бы все браузеры могли обрабатывать свойство градиент, никто бы не заморачивался с картинками. Особенно, было актуально во времена WinXP с IE7 / IE8.
    Ответ написан
    Комментировать
  • Нужно создать кнопку, и когда кто-то нажимает, я хочу отобразить метку со ссылкой. Как это можно сделать?

    @alexalexes
    Управляйте видимостью вашей ссылки по событию кнопки onclick.
    Какие тут проблемы могут возникнуть-то у вас?
    <a id="my_link" href="https://vk.com/durov" target="_blank" style="display: none;">
      <img src="img/57d3d0a9e386c157136717cc.png" width="30px"/>
    </a> 
    <input type = "button" onclick = "document.getElementById('my_link').style.display = 'inline';" value = "связаться со мной" />
    Ответ написан
    Комментировать
  • Почему onclick срабатывает не на том div?

    @alexalexes
    Потому что к элементу, на котором произошло событие, нужно выходить через e.target, то есть использовать дескриптор события e.
    pole.onclick = function(e)
      {
          if(e.target.getAttribute('class') != 'pole-blue')
          {
              e.target.setAttribute('class', 'pole-blue');
          }
      }

    Еще момент, переменная через var должна быть объявлена один раз, переопределять через var нельзя.
    var pole = null;
    for(var i = 0;i<10;i++)
    {
      pole = document.createElement('div');
    Ответ написан
    1 комментарий
  • Как вывести и одновременно передать значение value в форме HTML?

    @alexalexes
    Кнопку оставляете в покое, значение передаете скрытым полем.
    <form action="?action=select_pay" method="POST">
    <input type="hidden"  name="pay_mode" value="20"  />
    <input type="submit" class="superbutton"  value="Яндекс Деньги"  />
    </form>
    <form action="?action=select_pay" method="POST">
    <input type="hidden"  name="pay_mode" value="10"  />
    <input type="submit" class="superbutton"  value="Еще одна платежка"  />
    </form>
    Ответ написан
  • Как безопасно загрузить изображение на сервер?

    @alexalexes
    На стороне PHP пропустить полученный файл через GD библиотеку.
    При необходимости, уменьшить качество выходного файла, и попутно сгенерировать preview, отправив его обратно клиентку (+ подтвердив получение сервером).
    Учтите, придется увеличить доступный объем оперативной памяти для одного процесса PHP.
    На моем опыте, чтобы GD проглотила 16 Мпикс картинку, нужно 128 Мб ОЗУ.
    Перед скармливаем GD взвешиваем картинку с помощью getimagesize().
    Если это не сделать, и с превышением лимита отдать на обработку библиотеке, то скрипт тихо-мирно заглохнет, не сообщив клиенту ничего, а так можно сгенерировать сообщение, что файл большой.
    Ответ написан
  • Как сделать, чтобы все нечекнутые и чекнутые чекбоксы отправлялись на бэк?

    @alexalexes
    Сталкивался с такой особенностью, решал как раз через дополнительное поле hidden:
    <label>
    <input type="hidden" id="field_0_1" name ="param_list[0][field_1]" value="off"/>
    <input type="checkbox" onchange="set_hidden_checkbox(this, 'field_0_1')"/>
    </label>

    function set_hidden_checkbox(target, id)
    {
      var hidden = document.getElementById(id);
      if(hidden !== undefined)
         hidden.value = target.checked ? 'on' : 'off';
    }

    Атрибут value в hidden нужно инициализировать значением по умолчанию.
    Ответ написан
    Комментировать
  • Как сделать кроссбраузерное оформление для Select?

    @alexalexes
    select-ы, чекбоксы, полосы прокрутки - это самые некастомизируемые элементы веб интерфейса.
    В качестве альтернативы используют JQuery ui виджеты.
    Ответ написан
    Комментировать
  • Как прочитать текст между тегами HTML на Node.js( cheerio)?

    @alexalexes
    Это текст не между тегами, это содержимое самого тега.
    links.eq(i).html() - не оно ли?

    Задаете вопросы, ответы на которые есть в документации.
    Ответ написан
    3 комментария
  • Как запустить jQuery анимацию (плагин) при доскролле?

    @alexalexes
    Написал общее решение для вашей задачи, когда необходимо обработать доскроллинг.
    Запускайте плагин, когда наступает ситуация "выполнения действия", или выполняйте метод плагина, который перезапускает анимацию.

    <style>
    #div1
    {
      display: block;
      width: 400px;
      height: 1400px;
      background-color: green;
    }
    #div2
    {
      display: block;
      width: 400px;
      height: 400px;
      background-color: red;
    }
    </style>
    <div id="div1">
    </div>
    <div id="div2">
    </div>
    <script>
      //Функция для определения необходимости выполнения действия,
    //связанное с появлением элемента elem_id в видимой части документа
      function SomethingToDoElem(e, elem_id)
      {
        var elem = document.getElementById(elem_id);
        if(elem === null)
          return;
        //определение размера видимой части документа без JQuery
        var opera = (navigator.userAgent.toLowerCase().indexOf('opera') > -1),
        html = document.documentElement,
        body = document.body,
        w = document.compatMode=='CSS1Compat' && !opera ? html.clientWidth : body.clientWidth,
        h = document.compatMode=='CSS1Compat' && !opera ? html.clientHeight : body.clientHeight;
        // если величина прокрутки по вертикали + видимая высота документа
    //превышает расстояние от верха документа до элемента,
        // для которого требуется действие доскроллинга, то выполняем это действие
        if(e.currentTarget.scrollY + h > elem.offsetTop)
        {
          var is_did_something = elem.getAttribute('is_did_something'); // если действие однократного применения,
    //то получаем данные о том, что оно не выполнялось ранее, например, с помощью атрибута тега.
          if(is_did_something === null) // атрибут не создан, значит действия не было
          {
            setTimeout(function(){elem.style.backgroundColor = 'blue'; }, 1000); // выполняем действие
            elem.setAttribute('is_did_something', 1); // записываем, что действие выполнили
    // для проверки однократности его выполнения
          }
        }
      }
      // Ловим события, для которых возможно понадобиться действие доскроллинга
      
      // на загрузку документа, лучше использовать JQuery аналог
      window.onload = function(e)
      {
        SomethingToDoElem(e, "div2");
      }
      
      // на прокрутку документа
      window.onscroll = function(e)
      {
        SomethingToDoElem(e, "div2");
      }
      
    // на изменение размера окна документа, если дизайн резиновый
    // и интересуемый элемент div2 может изменять в этом случае свое положение
    // при ресайзе окна браузера.
     
    
    // !!!: лучше не привязывать через $().on('resize', ...) криво срабатывает вызов,
    // использовать только нативные способы подписки на событие.
      window.onresize = function(e)
      {
        SomethingToDoElem(e, "div2");
      }
    
    // Также нужно вызывать  SomethingToDoElem(e, "div2"); при любом динамическом изменении
    // контента страницы или блока, где этот контент расположен.
    </script>
    Ответ написан
    Комментировать
  • Как создать скрипт для проверки содержимого на изменения и вывода текста?

    @alexalexes
    Там выводятся записи за последние 24 часа.

    И надпись убирается через 24 часа если изменений нет.


    У вас выборка записей свежестью в 24 часа. Они будут все новые.
    При таких условиях их не имеет смысла помечать.

    Если вам нужно понять, что появилось новое между сеансами просмотра списка (с интервалом менее 24 часа), то вам просто нужно решить задачу (с помощью cookies), как сохранить отметку времени, когда список был просмотрен, и какое действие считать за просмотр списка.
    При повторном выведении списка смотреть дату каждой записи, если запись свежее чем дата предыдущего просмотра, то это new.
    Если нет возможности получать дату записи, то придется как-то идентифицировать каждую запись и хранить флаг "просмотрено". Что не будет иметь флага "просмотрено" при повторном анализе списка, то и будет new.
    Ответ написан
    Комментировать
  • Как сделать чтобы при повторном нажатии элемент переворачивался?

    @alexalexes
    Как вариант, с помощью JS добавляете обработчик событий onmouseout и touchend, который меняет класс у элемента div с классом flipper. Попеременно, когда мышь покидает блок или касание прекращается, его состояние изменять с class="flipper right-rotate" на "flipper left-rotate" и обратно.
    Соответственно, вращения будут обозначены двумя различными правилами, под каждое состояние "триггера":
    .flip-container.hover .flipper.right-rotate {}
    .flip-container.hover .flipper.left-rotate {}

    Можно применить более изящное решение, но оно находится в компетенции технологии Sass, увы, подсказать реализацию не смогу, но уверен, что такие метаморфозы с запоминанием состояний объектов - это в порядке вещей там.
    Ответ написан
    Комментировать