Показать сообщение отдельно
  #1 (permalink)  
Старый 30.09.2016, 01:55
Новичок на форуме
Отправить личное сообщение для IndiraVarma Посмотреть профиль Найти все сообщения от IndiraVarma
 
Регистрация: 30.09.2016
Сообщений: 4

Функция запускается кнопкой, но не запускается другой функцией или событием
Исходные данные

Есть кусок шаблона 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.
Ответить с цитированием