2016-03-15 1 views
0

Как я могу получить дату/время, когда "DOMSubtreeModified"/или когда мой динамический элемент div изменился. В основном всякий раз, когда изменяется содержание моего DIV элемента, я просто хотел бы напечатать штамп времени из time & mo/day/yearполучить/определить дату и время изменения содержимого элемента div

+1

https://developer.mozilla.org/en-US/docs/Web/Events/DOMSubtreeModified любые проблемы, связанные с этим? –

+0

О, ничего себе, это потрясающе, но я не хочу этого в заголовке. Но позвольте мне попробовать эту логику –

+0

Вы можете заметить, что [* DOMSubtreeModified * устарел] (https://www.w3.org/TR/DOM-Level-3-Events/#event-type-DOMSubtreeModified), поэтому вы можете ожидать он должен быть удален или заменен в некоторых будущих спецификациях или стандартах. Это также багги в IE 9 и отсутствует в Opera. – RobG

ответ

1

Bind слушателя DOMSubtreeModified событий к элементу.

var element = document.getElementById('foo'); 

element.addEventListener('DOMSubtreeModified', function() { 
    var date = new Date(); 
    var month = date.getMonth() + 1; 
    var day = date.getDate(); 
    var year = date.getFullYear(); 

    var time = date.toLocaleTimeString(); 
    var formattedDate = month + '/' + day + '/' + year; 

    console.log(time); // 7:01:21 PM 
    console.log(formattedDate); // 3/15/2016 
}, false); 

// change something on element 
setTimeout(function() { 
    element.dataset.foo = 'bar'; 
}, 3000); 

JSFiddle Демо: https://jsfiddle.net/n1mmdayk/3/

+0

Спасибо, это выглядит отлично, но похоже, что он не работает с изменением, чтобы получить имя класса. Ошибка на элементе element.addEventListener. https://jsfiddle.net/n1mmdayk/5/ –

+1

@MattDamon использует 'querySelector' https://jsfiddle.net/n1mmdayk/6/, иначе' getElementsByClassName' возвращает массив, поэтому вам придется проходить через каждый элемент, подобный этому https://jsfiddle.net/n1mmdayk/9/. Существуют и другие способы связывания таких событий, как использование делегирования событий –

+0

Спасибо за информацию | ваша функция тайм-аута не работает над тестированием –