$('.class').hover(
function() {
var $el = $(this);
$el.addClass('active');
setTimeout(function() {
$el.removeClass('active')
}, 500);
}
);
// getTimeTill.php
$deadline = strtotime("2017-07-01 03:00:00");
echo round( 1000 * $deadline - 1000 * microtime(true)); // в миллисекундах
var start = (new Date).getTime();
$.get("getTimeTill.php", function( ms ){
var bias = Math.round(((new Date).getTime() - start) / 2);
var remains = ms + bias; // сколько остаётся микросекунд до события на данный момент
var deadline = (new Date).getTime() + remains; // локальное время События
// можно запускать таймер, который раз в 200 ms будет обновлять время до События
var el = document.getElementById("timer");
window.setInterval( function(){
var remains = Math.floor((deadline - (new Date).getTime())/1000);
var H = Math.floor( remains / 3600);
remains -= 3600 * H;
H = ( '0' + H ).substr(-2);
var M = Math.floor( remains / 60);
remains -= 60 * M;
M = ( '0' + M ).substr(-2);
var S = ( '0' + remains ).substr(-2);
timer.innerText = "" + H + ":" + M + ":" + S;
}, 200);
});
var eur = "10.50 EUR";
var price = parseFloat( s.substr( 0, s.length - 4)).toFixed(2); // "10.50"
var q = "55"; // jQuery возвращает строку
var total = parseFloat( price) * parseInt(q);
total = total.toFixed(2); // строка, точно два знака после запятой
var i, collection = document.getElementsByClassName('hello');
for( i = 0; i < collection.length; i++) {
collection[i].addEventListener('click', onClick);
}
function onClick() {
var i, index = -1;
for(var i=0; i < collection.length; i++) {
if( this === collection[i]) {
index = i;
break;
}
}
if( !!~index) alert(index);
}
$uslovie ?: $esli_false
вернёт само $uslovie
, если то соответствует true
.condition && do_it();
var test = true;
test && console.log("it was true!");
// или назначение
var Boo = test && "если тру"; // иначе Boo === test (что он там возвращает, 0, NaN, false?)
while()
из этого зоопарка присутствует только условие.for( i = 0; i < 2; i = i + 1) {
console.log( i ); // выводит значение i в консоль
}
i = 0
.i < 2
.0
.i = i + 1
.i < 2
и если всё ок, снова ныряем.1
.i = i + 1
, но условие уже не проходит проверку, т.к. i
стало равно 2
.while()
выглядел бы так:i = 0;
while( i < 2 ) {
console.log( i );
i = i + 1;
}
for()
это просто более компактная запись довольно типичного цикла. var dt = new Date();
var date = dt.getDate();
if( date < 15) dt.setDate(1); // до 15-го числа будет 1-е
else dt.setDate(15); // после 15-го – 15-е
// Display the month, day, and year. getMonth() returns a 0-based number.
var day = dt.getDate();
var month = dt.getMonth()+1;
var year = dt.getFullYear();
document.write(day + '-' + month + '-' + year);
// суммы – где сумма координат X + Y = N, для каждой диагонали N постоянно
var side = 5,
sum = Array.apply(null, Array(side * 2 - 1)).map(Number.prototype.valueOf,0),
row, col
;
for( row = 0; row < side; row++) {
for( col = 0; col < side; col++) {
sum[row + col] += arr[row][col];
}
}
result.innerHTML += '<pre>' + JSON.stringify(sum) + '</pre>';
// выборка всех под-элементов в блоке:
var $el = $('#block_id').children();
// какой-то один случайный из них:
var $random = $el[ Math.floor( Math.random() * $el.length)];
// вставить его куда-то ещё
$("#suda").append( $random);
function rangeSum(a,b) {return (b*b-a*a+a+b)/2}
console.log( rangeSum( 1, 3)); // 6
console.log( rangeSum( 20, 220)); // 24120
function rangeSum( from, to) {
var i, sum = 0;
for( i = from; i <= to; i++) {
sum = sum + i;
}
return sum;
}
console.log( rangeSum( 1, 3)); // 6
console.log( rangeSum( 20, 220)); // 24120
function rangeSum2( from, to) {
var m = to - from + 1;
return from * m + ( m * m - m) / 2;
}
console.log( rangeSum2( 1, 3)); // 6
console.log( rangeSum2( 20, 220)); // 24120
var arr = [ 1, 3, 2, 3, 6, 2 ];
var maxIndex = arr.indexOf( Math.max.apply(null, arr)); // 4, считается от 0
var arr = [ 1, 3, 2, 3, 6, 2 ];
function index_max(arr) {
var i, maxV, maxP;
for( i = 0; i < arr.length; i++) {
if( typeof maxV === "undefined" || arr[i] > maxV ) {
maxV = arr[i];
maxP = i;
}
}
return maxP;
}
index_max(arr) // 4
var data = [{x:0,y:1}, {x:1,y:1}, {x:4,y:1}, {x:5, y:7}]
, pairs = []
, i
;
for( i = 0; i < data.length; i++) { // перебираем входные элементы
if( i % 2 === 0) pairs.push([]); // четный – добавляем новую пустую «пару»
pairs[ pairs.length - 1].push( data[i]); // в последнюю пару добавляем элемент
}
JSON.stringify( pairs ) // [[{"x":0,"y":1},{"x":1,"y":1}],[{"x":4,"y":1},{"x":5,"y":7}]]
var
, где бы вы его ни написали, «поднимается» наверх при интерпретации кода – это называется var hoisting. Поэтому ваши варианты 1) и 2) не имеют разницы. Возможно, во 2-м варианте вы имели в виду let вместо var
?/**
* @param array hits - массив данных об ударах.
* @param int start - начало интервала (включён), число миллисекунд с 1 января 1970 UTC
* @param int finish - конец интервала (исключён), число миллисекунд с 1 января 1970 UTC
*
* @return возвращает объект, где ключи – моменты начала 15-минуток, а значения – число событий
*/
function bins( hits, start, finish) {
var i
,step = 15 * 60 * 1000 // 15 минут в миллисекундах
,bins = {}
;
// заполнить ячейки нулями
i = start;
do { bins[i] = 0 } while( i += step < finish);
// перебрать все сэмплы
for(i = 0; i < hits.length; i++) {
hitTime = hits[i].ts; // считаем, что значение времени лежит в свойстве "ts"
if( hitTime < start || hitTime >= finish) continue; // вне диапазона
binTime = start + Math.floor( (hitTime - start) / step) * step; // в какое ведёрко попадает
bins[ binTime]++;
}
return bins;
}
state
:(function($el) {
var state, timer;
function checkTime() {
var h = (new Date).getHours(), state_prev = state;
state = ( h >= 9 && h < 22) ? 'DAY' : 'NIGHT';
if( state_prev !== state) { // только что изменился статус
if( state === 'DAY') $el.removeClass('disable').addClass('visible');
else if( state === 'NIGHT') $el.addClass('disable').removeClass('visible');
}
}
checkTime(); // вызвать один раз сразу же
timer = window.setInterval(checkTime, 10000); // раз в 10 секунд перепроверять
})(
$('.opened') // jQuery-выборка элементов, которым переключать класс
);
var $el = $('.opened'); // jQuery-выборка элементов, которым переключать класс
window.setInterval( function() {
var h = (new Date).getHours(); // текущий час по локальному времени
if( h >= 9 && h < 22) $el.removeClass('disable').addClass('visible'); // кабак открыт
else $el.addClass('disable').removeClass('visible'); // кабак закрыт
}, 10000); // раз в 10 секунд перепроверять