Как выполнить функцию onclick в шаблоне e js - PullRequest
0 голосов
/ 02 мая 2020

Я использую e js для динамического создания кнопок, которые имеют функции onclick, которые находятся внутри тега удаленного скрипта. Удаленный скрипт запускается, но при нажатии кнопок функция не может быть найдена.

коллекция: 148 Uncaught ReferenceError: viewPanoscape не определено в HTMLButtonElement.onclick

Мой файл e js

<body>
      <tbody>
            <% let c=1 %>
            <% collection.forEach(function(ps){ %> 
            <tr>
                <th scope="row"><%=c%></th>
                <td><button type="button" class="btn btn-primary" onclick="viewPanoscape()">View</button></td>
            <%c++%>
            </tr>
      </tbody>

моей удаленной коллекции . js file

 function viewPanoscape(e){
    console.log('viewPanoscape', e);
}

window.onload = function() {
  viewPanoscape("test");
}

Я знаю, что скрипт загружается при печати консоли

viewPanoscape test

Но когда я нажимаю кнопку, он не видит функцию. Ясно, что это проблема с областью видимости, но я не понимаю, как лучше всего включить функцию, которую может увидеть e js.

1 Ответ

0 голосов
/ 02 мая 2020

Я нашел решение, используя addEventListener () вместо onclick

    window.addEventListener('load', function()
{
  console.log('window loaded')
  const block = document.querySelector('.product-container');
  // Create a function that shows the index of the child of the parent block
  for (let i=0, len = block.children.length; i < len; i++){
      (function(index){
        block.children[i].onclick = function(e) {
          if (e.target && e.target.classList.contains('viewbutton')){
            console.log(e.target,e.target.classList);
          }
        }
      })(i);
  }
})

с помощью этого сообщения JavaScript Событие onclick получает неверный идентификатор из динамически сгенерированного html элемента

...