var perPage = 3, // кол-во элементов открывать по клику
offset = 0,
listBox = document.querySelector('.b-tag'),
list = listBox.querySelector('.b-tag__list'),
listItems = [].slice.call(list.querySelectorAll('li')),
listCnt = listItems.length,
moreBut = document.createElement('a');
moreBut.className = 'b-tag__link b-tag__link--more';
moreBut.textContent = 'Еще';
listBox.appendChild(moreBut);
moreBut.addEventListener('click', function(e) {
e.preventDefault();
listItems.slice(offset, (offset = perPage + offset)).forEach(function(li) {
li.style.display = 'list-item';
});
if (offset >= listCnt) {
this.style.display = 'none';
}
}, false);
moreBut.click();
var obj = {
2: {
5: 15,
11: 220,
30: 70
},
3: {
1: 65,
4: 30,
30: 5
}
};
function daysInMonth(month, year) {
return (new Date(year, month, 0)).getDate();
}
var months = Object.keys(obj),
tbl = '<table>',
lineTop = '',
lineBot = '';
for(var i = 0; i < months.length; i++) {
lineTop = '<tr>';
lineBot = '<tr>';
for(var d = 1; d <= daysInMonth(months[i], 2016); d++) {
lineTop += '<th>' + d + '</th>';
if(obj[months[i]].hasOwnProperty(d)) {
lineBot += '<td class="has-val">' + obj[months[i]][d] + '</td>';
} else {
lineBot += '<td></td>';
}
}
lineTop += '</tr>';
lineBot += '</tr>';
tbl += lineTop + lineBot;
}
tbl += '</table>';
document.body.innerHTML = tbl;
но получаю только ошибкиОшибки желательно показывать, да и код показали не полный.
var MutationObserver = window.MutationObserver || window.WebKitMutationObserver,
observer = new MutationObserver(function(mutations) {
mutations.forEach(function (mutation) {
console.log(mutation.addedNodes);
});
});
var config = {
childList: true
};
var target = document.querySelector('tbody');
observer.observe(target, config);
Сама таблица выглядит такА в реальном html-коде id у
<tbody>
присутствует? init()
, после this.setup()
дописываем this.showFirstLastLetter()
showFirstLastLetter()
showFirstLastLetter: function(){
this.guessLetterInput.val(this.wrd.letters[0].letter);
this.guessForm.trigger('submit');
this.guessLetterInput.val(this.wrd.letters[this.wrd.totalLetters-1].letter);
this.guessForm.trigger('submit');
},
<input type="text">
<button>Удалить обработчик события</button>
var inp = document.querySelector('input');
inp.oninput = function(){
console.log(this.value);
};
document.querySelector('button').addEventListener('click', function(){
inp.oninput = null;
}, false);
Пример в песочнице ;(function($){
$.fn.fadeInDelay = function(){
var init = function(){
$(this).hide().delay($(this).data('delay')).fadeIn();
};
return this.each(init);
};
}(jQuery));
$('div').fadeInDelay();
setTimeout(func, delay, [param1, param2, ...]);
// т.е. в вашем случае:
setTimeout(F1, 5000, sname, cls);
function ABC(arr, spec) {
for (i = 0; i < arr.length; i++) {
if (arr[i].hasOwnProperty(spec)) {
console.log(arr[i][spec]);
}
}
}
var arrOfObj = [{
prop1: 'prop 0.1',
prop2: 'prop 0.2'
}, {
prop1: 'prop 1.1',
prop2: 'prop 1.2'
}, {
prop1: 'prop 1.2',
prop2: 'prop 2.2'
}];
ABC(arrOfObj, 'prop1');
В ином случае, скорее всего, что не учитывается структура массива/объекта и т.д.function checkProp(o, s) {
for (var i = 0; i < s.length; i++) {
if ((Array.isArray(o) && typeof o[s[i]] === 'undefined') ||
(typeof o === 'object' && !o.hasOwnProperty(s[i]))) {
return false;
} else {
o = o[s[i]];
}
}
return o;
}
function ABC(arr, spec) {
var value;
for (var i = 0; i < arr.length; i++) {
if (value = checkProp(arr[i], spec)) {
console.log(value);
}
}
}
var arrOfObj = [{
prop1: [{
abc: 'ABC1'
}, {
def: [
100500, {
ghi: 'GHI1'
}
]
}],
prop2: 'prop 0.2'
},
{
prop1: [{
abc: 'ABC2'
}, {
def: [
100500, {
ghi: 'GHI2'
}
]
}],
prop2: 'prop 0.2'
}];
ABC(arrOfObj, ['prop1', 0, 'abc']); // ABC1, ABC2
ABC(arrOfObj, ['prop1', 1, 'def', 1, 'ghi']); // GHI1, GHI2
$(function() {
if ($(window).width() < 768) {
var iconset = $('.iconset-phone');
$(window).on('scroll', function() {
iconset[$(this).scrollTop() > 0 ? 'slideUp' : 'slideDown']();
});
}
});
document.addEventListener('click', function(e) {
if (e.target.classList.contains('class')) {
deletComment(e.target);
}
}, false);
stopPropagation не помогЯ бы удивился, если бы помог, т.к. document в иерархии всплытия события, будет стоять последним в очереди. Я в принципе вам предлагал использовать делегирование, т.е. один обработчик клика на весь документ. В вашем случае, проблему можно решить, установив обработчик на ближайший родительский статичный элемент, а не на весь документ. И, если присутствуют еще какие-то родительские элементы, на которых так же установлен клик, то делать проверку внутри их обработчика. Вариант 1, Вариант 2.
<div class="wrapper" data-method="setBgColor">
wrapper
<div class="parent" data-method="alertHello">
parent
<div class="child" data-method="changeBorder">
child
</div>
</div>
</div>
document.addEventListener('click', function(e) {
var el = e.target;
if (methods.hasOwnProperty(el.dataset.method)) {
methods[el.dataset.method].call(el);
}
}, false);
var methods = {
setBgColor: function() {
this.style.backgroundColor = '#ff0';
},
alertHello: function() {
alert('Hello, world!');
},
changeBorder: function() {
this.style.border = '3px dashed #900';
}
};
var div = document.querySelector('div');
document.querySelector('button').addEventListener('click', function() {
var cl = div.cloneNode(true);
cl.style.cssText = 'height: auto; position: absolute; left: -100500px;';
document.body.appendChild(cl);
div.style.height = cl.offsetHeight + 'px';
cl.parentNode.removeChild(cl);
}, false);