Исходные данные
Есть кусок шаблона view/test.thml
<div class="panel panel-default">
<div class="panel-heading">
<h3 id="" class="panel-title">Название окна: {переменная.один}</h3>
</div>
<div class="panel-body">
<p>Общая информация: {переменная.два}</p>
<button class="btn btn-default" type="button" onclick="changeTestView()">Обновить информацию</button>
</div>
</div>
Есть index.html куда нужно вставить шаблон
<section id="inform"></section>
Теперь самое интересное
// Получаем данные из шаблона и добавляем их в элемент id="inform" в index.html
viewTestFile = file_get_contents('view/test.html');
document.getElementById('inform').innerHTML = viewTestFile;
viewTestHMTL = document.getElementById('inform').innerHTML;
var counter = 1;
// Эта функция обновляет HTML код с новыми значениями переменных
function changeTestView(){
var test1 = 'Значение переменной один: ' + counter;
var test2 = 'Значение переменной два: ' + counter;
// шаблонизатор
var str = viewTestHMTL, newstr;
newstr = str.replace(/{переменная.один}/g,test1)
.replace(/{переменная.два}/g,test);
document.getElementById('inform').innerHTML = newstr;
counter++;
}
К шаблонизатору особо вопросов не возникает. Меняет все как надо.
Суть проблемы:
Если функция changeTestView() вызывается через
<button onclick="changeTestView()"></button>
то все в порядке.
Если вызываем функцию changeTestView() любой другой функцией, а также обрабатываем событие нажатие кнопки (предварительно присвоив кнопке id="buttonChange"), например вот так:
document.getElementById('buttonChange').onclick = function(){
changeTestView();
};
то функция changeTestView() срабатывает только один раз и больше не хочет.
После этого другие функции тоже не могут запустить changeTestView(), а также функции, которые содержат в себе changeTestView() перестают выполняться.
НО, если нажимать на такую кнопку:
<button onclick="changeTestView()"></button>
то фукнция changeTestView() выполняется.
Второй день пытаюсь понять в чем проблема.
Это за гранью моего понимания.
Прошу помочь разобраться в этой проблеме. Не хочется отказываться от шаблонизатора.
P.S. Раньше я не использовал шаблонизатор и менял данные присвоением к элементам id и применением на них innerHTML = 'Новое значение', но это неудобно становится слишком много id, в них начинают путаться уже, и тогда не удобно работать с шаблоном. Приходится переписывать и контролер еще. А это неправильно с точки зрения концепции MVC.