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');
select t1.*, t2.*
from table1 t1
join table2 t2 on t2.field1 = t1.field1
and t2.field2 = t1.field2
and ... -- сравниваем все поля
select t1.* from table1 t1
UNION
select t2.* from table2 t2
MINUS
select t1.*
from table1 t1
join table2 t2 on t2.field1 = t1.field1
and t2.field2 = t1.field2
and ... -- сравниваем все поля
Объекты могут быть отсортированы по значению одного из своих свойств.
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;
});
Месяц, год Значение Дельта
Январь, 2018 26,00 -
Февраль, 2018 28,00 2,00
Март, 2018 29,60 1,60
Апрель, 2018 32,10 2,50
Май, 2018 33,00 0,90
Июнь, 2018 35,00 2,00
Июль, 2018 37,00 2,00
Август, 2018 38,00 1,00
Сентябрь, 2018 39,26 1,26
Октябрь, 2018 40,86 1,60
Ноябрь, 2018 42,12 1,26
Декабрь, 2018 42,98 0,86
Январь, 2019 43,80 0,82