2014-02-04 18 views
1

Я хочу запустить действие при изменении содержимого html. Ниже код изменяет содержимое html myId, когда click на кнопке, поэтому есть изменение в содержании html myId сейчас я хочу запустить еще одно действие, скажем console.log("myalert").Событие пожара при изменении содержимого html

<html> 
<body> 
    <input type="button" id="buttonid" value="click"> 
    <div id = "myId"> 
    </div> 
</body> 
<script> 
var button = document.getElementById("buttonid"); 
    button.addEventListener("click", function() { 
     console.log("alert"); 
     document.getElementById('myId').innerHTML = '<input type="button" id="button3" value="click2">' 
    }); 

var button2 = document.getElementById("myId"); 
button2.addEventListener("change", function() { 
     console.log("myalert");   
    });  
</script> 
</html> 

Как я могу достичь своего требования?

Примечание: Я не хочу использовать jQuery.

+1

Почему вы положили содержимое вне 'body'? –

+2

Возможный дубликат: http://stackoverflow.com/questions/3219758/detect-changes-in-the-dom –

+0

@DanielLisik это не имеет значения, я обновил свой код, вы можете снова посмотреть. – user3002180

ответ

0

Для этого нет реального события. Однако вы можете устранить это, прослушивая изменения в цикле интервалов. Я бы не рекомендовал его, но мне не решить, что вы используете в конце. Это было бы что-то в строках:

var myIdContent = document.getElementById('myId').innerHTML; 
setInterval(function(){ 
    if(myIdContent !== document.getElementById('myId').innerHTML){ 
    myIdContent = document.getElementById('myId').innerHTML; 
    // Element has changed, do some modifications here 
    } 
}, 1000); // Lower number for shorter intervals 

Однако это может стать очень медленным, когда содержимое div растет. Лучшим способом было бы вызвать функцию события или «изменения» всякий раз, когда вы меняете html из javascript. У вас есть больше материала для написания, но также больше контроля над событиями изменений.

Вопрос с ответами, которые не связаны с сравнивающим содержанием: Detect changes in the DOM

+0

Я не хочу использовать 'setInterval'. Есть ли другой путь? – user3002180

+0

Хорошо, тогда нет настоящей легкой готовой реализации событий манипуляции DOM. Вы должны проверить здесь, и быть готовым заполучить руки: http://stackoverflow.com/questions/3219758/detect-changes-in-the-dom – Hless

Смежные вопросы