Ответы пользователя по тегу JavaScript
  • Как захватить цвет?

    Вам нужно окрасить блок всеми цветами? И каждый цвет - это 1px?

    Если да, то первое что приходит в голову, то взять RGB и пробежаться циклом
    от rgb(0, 0, 0) до rgb(255, 255, 255), создавая блоки 1px на 1px для каждого цвета.

    Посмотрите пример на хабре как делают Color Picker на JavaScript, все достаточно
    примитивно и даже можно скачать исходник. Я понимаю, что вам не нужен Color
    Picker, просто посмотрите на реализацию цикла и сделайте то, что надо вам.
    Ответ написан
    Комментировать
  • Как начать загружать .swf по клику?

    Кликаем на кнопку Го и в div с id embed добавляется ваш файл.

    <div id="embed"></div>
    <button id="go">Го</button>


    document.getElementById('go').onclick = function() {
        document.getElementById('embed').innerHTML = "<embed class='swfgame' src='/uploads/files/2016-02/1454280171_flashplayerru_32385.swf' width='100%' height='500px' allowScriptAccess='sameDomain' allownetworking='internal' type='application/x-shockwave-flash' pluginspage='http://www.macromedia.com/go/getflashplayer'></embed>";
    }
    Ответ написан
    1 комментарий
  • Нужно ли оборачивать синхронную функцию в setTimeout, если нужно вернуть promise?

    Если вы делает запрос к серверу, то это асинхронный процесс, если вы ожидаете ввод пользователя - это асинхронный процесс. А при помощи setTimeout вы по сути имитируете какой-либо процесс, то есть после того как прошло 20 секунд, должно, что-то произойти. Поэтому всегда вставлять его не нужно, главное, чтобы внутри Promise была асинхронная операция, которая после завершения вызовет resolve или reject. Допустим вы загружаете изображения с другого сервака на свой и после того, как будут получены данные, вы вызываете resolve, а если оборвалось, то reject. Никакой setTimeout в данном случае не нужен. А если функция синхронная, тогда да, setTimeout нужен.
    Ответ написан
    Комментировать
  • Как выключить видео с youtube при закрытии модального окна?

    Можно просто удалять iframe и вставлять, когда потребуется.
    В Jquery удалить элемент можно при помощи функции - remove()
    А добавить элемент append()

    То есть, когда вы закрыли окно, то удаляете iframe.

    Вот пример того, как удаляется iframe https://jsfiddle.net/o0xusd7h/

    Можно не удалять, а менять src на пустоту.
    Ответ написан
    2 комментария
  • Как правильно сделать передать скрипту данные и атрибута data?

    Ну, собственно, вот так:

    <div id="timer">
    	<div id="tm1" data="02/19/2016 10:1"></div>
    	<div id="tm2" data="02/14/2016 20:1"></div>
    	<div id="tm3" data="02/12/2016 01:1"></div>
    </div>


    var elems = document.getElementById('timer').childNodes,
    	id_tm = '',
    	tm = '';
    
    [].forEach.call(elems, function(elem) {
    	if( elem.tagName == 'DIV'){
    		id_tm = elem.getAttribute('id');
    		tm = elem.getAttribute('data');
    		CountDownTimer(tm, id_tm);
    	}
    });
    
    function CountDownTimer(dt, id)
    {
        var end = new Date(dt);
    
        var _second = 1000;
        var _minute = _second * 60;
        var _hour = _minute * 60;
        var _day = _hour * 24;
        var timer;
    
        function showRemaining() {
            var now = new Date();
            var distance = end - now;
            if (distance < 0) {
    
                clearInterval(timer);
                document.getElementById(id).innerHTML = 'EXPIRED!';
    
                return;
            }
            var days = Math.floor(distance / _day);
            var hours = Math.floor((distance % _day) / _hour);
            var minutes = Math.floor((distance % _hour) / _minute);
            var seconds = Math.floor((distance % _minute) / _second);
    
            document.getElementById(id).innerHTML = days + 'days ';
            document.getElementById(id).innerHTML += hours + 'hrs ';
            document.getElementById(id).innerHTML += minutes + 'mins ';
            document.getElementById(id).innerHTML += seconds + 'secs';
        }
    
        timer = setInterval(showRemaining, 1000);
    }
    Ответ написан
    8 комментариев
  • Как разделить блок на двое? есть навигация и содержимое нужно разделить на два блока, как сделать?

    Посмотри в сторону скриптов каруселей, например, kenwheeler.github.io/slick.
    Там много демо, уверен это то, что вы хотели. И кстати, не требует каких-либо знаний
    в JavaScript, вставляете и меняете оформление как вам угодно.
    Ответ написан
    Комментировать
  • Как на canvas-е нарисовать сетку?

    Я правильно вас понял? - codepen.io/anon/pen/JGZOEX

    <canvas id="setka" width="400" height="400"></canvas>


    var c_canvas = document.getElementById("setka");
    var context = c_canvas.getContext("2d");
    
    for (var x = 0.5; x < 400; x += 10) {
    	context.moveTo(x, 0);
    	context.lineTo(x, 400);
    }
    
    for (var y = 0.5; y < 400; y += 10) {
    	context.moveTo(0, y);
    	context.lineTo(400, y);
    }
    
    context.strokeStyle = "#888";
    context.stroke();
    Ответ написан
    Комментировать
  • Как заменить выделенный текст на свой?

    Залил пример, попробуйте - codepen.io/anon/pen/rxKGwZ

    <textarea id="text"></textarea>
    <button id="go">Кнопка</button>


    function replaceSelectedText(elem, str){
    	elem.focus();
    
    	if (document.selection){
    		var s = document.selection.createRange(); 
    		if (s.text){
    			eval("s.text="+str+"(s.text);");
    			s.select();
    			return true;
    		}
    	}
    	else if (typeof(elem.selectionStart) == "number"){
    		if (elem.selectionStart!=elem.selectionEnd){
    			var start = elem.selectionStart;
    			var end = elem.selectionEnd;
    
    			eval("var rs = "+str+"(elem.value.substr(start,end-start));");
    			elem.value = elem.value.substr(0,start)+rs+elem.value.substr(end);
    			elem.setSelectionRange(end,end);
    		}
    		return true;
    	}
    	return false;
    }
    
    //оборачиваем текст в нужные теги и т.д.
    function change_str(s){return "<b>"+s+"</b>"}
    
    // по клику на кнопку, выделенный текст будет заменен на текст с тегами
    document.getElementById('go').onclick = function() {
    	replaceSelectedText(document.getElementById('text'), 'change_str');
    }
    Ответ написан
    1 комментарий
  • Как вывести количество записей в рубрике за последние 24 часа WordPress?

    // Получаем время отсчета. То есть текущее время минус 24 часа = точка старта.
    $day = date('Y-m-d H:i:s', strtotime('-1 day'));
    
    // Делаем запрос к бд, получая в ответ все записи, которые
    // были опубликованы за последние 24 часа
    $numpost = $wpdb->get_var("SELECT COUNT(*) FROM $wpdb->posts WHERE post_status = 'publish' AND post_type = 'post' AND post_date > '$day'");
    
    // Выводим результат 
    echo $numpost;

    Я не внимательно прочитал. Оказывается надо для каждой рубрики.
    Поэтому добавляю код, который выводит и для рубрик:

    $this_cat = get_the_category();
      
    $this_cat = $this_cat[0]->cat_ID; // id текущей рубрики
    
    $day = date('Y-m-d H:i:s', strtotime('-1 day'));
    
    $numpost = $wpdb->get_var("SELECT COUNT(*) FROM $wpdb->posts 
    							WHERE post_status = 'publish' AND post_type = 'post' AND post_date > '$day' AND 
    							id IN (SELECT object_id FROM $wpdb->term_relationships WHERE term_taxonomy_id = '$this_cat')");
    
    echo $numpost;
    Ответ написан
    1 комментарий
  • Не работает highlight.js?

    Возможно вы неправильно инициализируете highlight.js...

    Когда инициализируете только лишь посредством этой строки:

    hljs.initHighlightingOnLoad();

    То необходимо установить его после HTML разметки, в противном случае ничего сработает.

    Либо делайте проверку на загрузку страницы при помощи window.onload:

    window.onload=function(){
        hljs.initHighlightingOnLoad();
    }

    Либо при помощи других библиотек, например, Jquery:

    $(document).ready(function() {
        hljs.initHighlightingOnLoad();
    });

    То есть инициализируем highlight, только после полной загрузки html-документа.
    Попробуйте на codepen.io обернуть инициализацию в функцию ожидания загрузки страницы и все должно заработать.

    P.S. Хотя по идеи должно работать и так, и так, если верить документации, но у меня не работало, когда я вызывал функцию до html разметки.
    Ответ написан