JavaScript this.getAttribute is not a function [дубликат]

256
14 мая 2018, 06:20

На данный вопрос уже ответили:

  • Потеря контекста вызова 5 ответов

Я читал подобные пробелмы и вопросы, но в моем контексте он немного отличается. Попробую описать максимально точно и детально Есть js файл, который отвечает за работу с меню. В меню всего два пункта: удалить файл, переименовать файл. у них нет id, есть атрибуты delete, edit

window.addEventListener('load', changeMenu);
function changeMenu() {
  // добавляет listener каждому элементу в списке файлов и папок
  // получаю все элементы списка
  let files = document.getElementsByClassName("dropDown");
  // добавляю событие на правый клик мыши для каждого элемента
  for(let i = 0; i < files.length; i ++){
    files[i].addEventListener("contextmenu", showEditMenu);
  }
  // спрятать меню
  document.addEventListener("click", hideEditMenu);
}
function showEditMenu(e) {
  // функция показывает меню с опциями
  e.preventDefault();
  e.stopPropagation();
  // получаю имя файла, который AJAX - ом отправлю на сервер
  let fileName = e.target.getAttribute("data-fileName");
  // действия для отрисовки меню
  let menu = document.getElementById("editMenu");
  let top = e.pageY;
  let left = e.pageX;
  menu.style.cssText = 'display: block;' + 'top: '+ top + 'px; left: ' + left  + 'px;';
  // получаю список вариантов и добавляю каждому listener по клику на него - нужно определить какая опция выбрана (удалить файл. переименовать файл)
  let options = document.querySelectorAll("#editMenu ul li a");
  for(let i = 0; i < options.length; i++){
    options[i].addEventListener('click', sendRequest);
  }
}
function sendRequest(e) {
  // и вот тут проблема. Не могу передать переменную fileName в эту функцию, вообще никак! 
  // перенос этой функции внутрь функции showEditMen не предлагать.
  let actionName = e.target.getAttribute("data-option");
}
Answer 1
options[i].addEventListener('click', function(e) { sendRequest(e, fileName); });
function sendRequest(e, fileName) {
  // ...
}
READ ALSO
crypto-worker.js Cannot read property &#39;setKey&#39; of null

crypto-worker.js Cannot read property 'setKey' of null

Использую VueЧтобы заново не генерировать ключи при каждом обращении, достал ключ из локального хранилища, обозначил константой и пробую...

275
Как правильно написать async function javascript

Как правильно написать async function javascript

Решаю задание и вот возникла проблема з написанием функцииВсе методы прописал, а вот как задейсвовать их не знаю

222