var article = e.target.parentNode.parentNode;
var src = article.getElementsByTagName('img')[0].getAttribute('src');
var title = article.getElementsByTagName('h2')[0].innerHTML;
var audio = new Audio();
audio.onended = function(e)
{
var target = e.target;
var cur_src = target.getAttribute('src');
switch(cur_src)
{
case '1.mp3': target.setAttribute('src', '2.mp3'); break;
case '2.mp3': target.setAttribute('src', '3.mp3'); break;
case '3.mp3': target.setAttribute('src', '1.mp3'); break;
}
target.play();
};
audio.setAttribute('src', '1.mp3');
audio.autoplay = true;
<input type="button" onclick="calc_table_add_row()" value="Добавить"/>
<div id="calc_table" class="table"></div>
<script src="https://code.jquery.com/jquery-3.3.1.js"></script>
<script>
// функция для добавления вычисляемой строки
function calc_table_add_row()
{
//Элементы input подписаны на события onkeypress и onblur, что позволяет делать пересчет как при непосредственном изменении значения, так и во время потери фокуса
$('#calc_table').append(
'<div class="tr">\
<div class="td">' + ($('#calc_table>div.tr').length + 1 /* это нумератор строки, добавляется номер от существующего кол-ва строк */) + '</div>\
<div class="td">\
<input type="text" onkeypress="calc_table_recalc_row(event)" onblur="calc_table_recalc_row(event)"/></div>\
<div class="td"><input type="text" onkeypress="calc_table_recalc_row(event)" onblur="calc_table_recalc_row(event)"/></div>\
<div class="td"><input type="text" onkeypress="calc_table_recalc_row(event)" onblur="calc_table_recalc_row(event)"/></div>\
<div class="td"></div>\
<div class="td"></div>\
</div>'
);
}
// функция-обработчик пересчета значений в строке
function calc_table_recalc_row(e)
{
var cur_input = e.target; // на этом элементе произошло событие (input)
var cur_td = cur_input.parentNode; // получаем родительский элемент (div.td, в котором нажодится затронутый input)
var cur_tr = cur_td.parentNode; // получаем родительский элемент (div.tr, в котором нажодится div.td с затронутым input)
var td_divs = $(cur_tr).find('div.td'); // находим все элементы div.td на данной строке
try // если возникнет какая-то ошибка, то тихо прекратим вычисления
{
var input1 = parseFloat($(td_divs[1]).find('input')[0].value); // получаем значение ячейки 2
var input2 = parseFloat($(td_divs[2]).find('input')[0].value); // получаем значение ячейки 3
var input3 = parseFloat($(td_divs[3]).find('input')[0].value); // получаем значение ячейки 4
if(!isNaN(input1) && !isNaN(input2) && !isNaN(input3)) // все ли значения получились числами вещественными ?
{
var result4 = input3 / input2; // считаем результат для ячейки 5
$(td_divs[4]).html( (result4).toFixed(2) ); // записываем результат в ячейку 5 с округлением до 2 знаков
$(td_divs[5]).html( (result4 * (input1.toFixed(2) == 10.00 ? 0.1 : 5)).toFixed(2) ); // считаем и записываем результат в ячейку 6 с округлением до 2 знаков
}
}
catch(ex)
{
}
}
</script>
if(!preloader.classList.contains('done'))
if(preloader.getAttribute('class').indexOf('done') == -1)
new Date(yearVal, monthVal, dayVal)
(new Date()).getTime() - (new Date(yearVal, monthVal, dayVal)).getTime()
var now = new Date();
var age = (now.getFullYear() - yearVal - ((now.getMonth() - (monthVal - 1) || now.getDate() - dayVal) < 0 ? 1 : 0));
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);
Object.defineProperty(window /*- объект, где располагается свойство */, "my_var" /* - свойство, которое нужно опекать */,
{
get: function() // сторожим чтение значения
{
alert('Кто-то прочилал my_var!');
},
set: function(newValue) // сторожим запись значения
{
alert('Кто-то записал my_var! Новое значение: ' + newValue);
}
});
my_var = 123456; // пробуем записать что-то
you_var = my_var; // пробуем извлечь значение
<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 = "связаться со мной" />
var node = this; // в ноду кладем текущий элемент Element;
// начинаем примерять селектор, двигаясь от текущего элемента к его родителям
while (node) // пока есть элемент (не null) (или на предыдущей итерации провалили матч и есть родитель)
{
if (node.matches(css)) // подходит селектор элементу ?
return node; // возвращаем этот элемент, цикл останавливается
else
node = node.parentElement; // не подошло, устанавливаем на node родительский элемент, идем на следующую итерацию.
}
return null; // цикл прошелся по всем родителям - ничего не нашли
Element.prototype.closest = function (css)
Element.prototype.matches = Element.prototype.matchesSelector || <подставьте любой метод, чтобы делал матч, но назывался не как у всех>
<style>
#elem1
{
display: block;
width: 400px;
height: 400px;
background-image: url("back1.png"),
url("back2.png");
transition: background-image 0.5s ease; /* для наглядности эффекта */
}
</style>
<div id="elem1"></div>
<script>
var trigger = 0;
setInterval(function()
{
var elem1 = document.getElementById('elem1');
elem1.style.backgroundImage = trigger % 2 == 1 ? 'url("back1.png"), url("back2.png")' : 'url("back2.png"), url("back1.png")';
trigger++;
}, 1000);
</script>
pole.onclick = function(e)
{
if(e.target.getAttribute('class') != 'pole-blue')
{
e.target.setAttribute('class', 'pole-blue');
}
}
var pole = null;
for(var i = 0;i<10;i++)
{
pole = document.createElement('div');
Объекты могут быть отсортированы по значению одного из своих свойств.
var items = [
{ name: 'Edward', value: 21 },
{ name: 'Sharpe', value: 37 },
{ name: 'And', value: 45 },
{ name: 'The', value: -12 },
{ name: 'Magnetic' },
{ name: 'Zeros', value: 37 }
];
items.sort(function (a, b) {
if (a.name > b.name) {
return 1;
}
if (a.name < b.name) {
return -1;
}
// a должно быть равным b
return 0;
});
<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>
if ('ontouchstart' in document.documentElement)
{
// есть сенсорный экран, значит, имеем дело с переносным гаджетом.
}
else
{
// desktop версия кода
(элемент ввода).focus(); //устанавливаем фокус
}