Почему возникает ошибка типа “cannot read property style of null”?

194
20 февраля 2018, 08:23

Выдаёт ошибку типа "cannot read property style of null". Что пытаюсь сделать: после движения мышкой к курсору должно прилипнуть изображение (сначала прописал его ссылкой, затем решил попробовать подгрузить со своего компа) и далее двигаться за курсором по экрану. Но что-то пошло не так. Консоль показывает, что события происходят, счётчик крутится, но в 4-й строчке обнаруживается ошибка.

document.onmousemove = function() { 
  document.getElementsByTagName('body')[0].insertAdjacentHTML('beforeEnd', '<img src="evernote.png" id="cat"'); 
  var cat = document.getElementById('cat'); 
  cat.style.position = 'fixed'; 
 
  document.onmousemove = function(event) { 
    cat.style.left = event.clientX + 20 + 'px'; 
    cat.style.top = event.clientY + 20 + 'px'; 
  } 
}

Answer 1

document.onmousemove = function() { 
  // во-первых не   document.getElementsByTagName('body')[0] 
  // а document.body без индекса 
  // и во-вторых в этой стороке <img src="evernote.png" id="cat"/> пропустил закрывающую скобку  
  document.body.insertAdjacentHTML('beforeEnd', '<img src="evernote.png" id="cat"/>'); 
  var cat = document.getElementById('cat'); 
  cat.style.position = 'fixed'; 
 
  document.onmousemove = function(event) { 
    cat.style.left = event.clientX + 20 + 'px'; 
    cat.style.top = event.clientY + 20 + 'px'; 
  } 
}

/*обрати внимание что если у BODY не прописан heigth, то он по умолчанию равен нулю и ты мышку двигаешь не в body, а в html*/ 
 
// данным способом  ( document.onmousemove ) ты двигаешь мышкой по html 
//и этот пример не будет работать 
 
//  смотри пример три 
 
 document.body.onmousemove = function() { 
 
      document.body.insertAdjacentHTML('beforeEnd', '<img src="evernote.png" id="cat"/>'); 
      var cat = document.getElementById('cat'); 
      cat.style.position = 'fixed'; 
 
       document.body.onmousemove = function(event) { 
        cat.style.left = event.clientX + 20 + 'px'; 
        cat.style.top = event.clientY + 20 + 'px'; 
      } 
    }
html{ 
background:red; 
} 
 
body{ 
background:green; 
}

Вариант ТРИ

// В данном варианте, когда у body прописан height ты уже двигаешь мышкой в body 
 
 
document.body.onmousemove = function() { 
 
  document.body.insertAdjacentHTML('beforeEnd', '<img src="evernote.png" id="cat"/>'); 
  var cat = document.getElementById('cat'); 
  cat.style.position = 'fixed'; 
 
  document.body.onmousemove = function(event) { 
    cat.style.left = event.clientX + 20 + 'px'; 
    cat.style.top = event.clientY + 20 + 'px'; 
  } 
}
html, 
body { 
  width: 100%; 
  height: 100%; 
  background: red; 
} 
 
body { 
  background: green; 
}

READ ALSO
Определить состояние чекбокса

Определить состояние чекбокса

Есть кастомный чекбокс на сайте, по клику на который необходимо узнать активный он или нетПишу следующие:

248
Как сделать пересчёт в таблице? JQuery

Как сделать пересчёт в таблице? JQuery

Доброго времени сутокНиже код таблички по ссылке файлик (обычный текстовой), в файле табличка которая строится по виду Excel таблицы

180
Можно ли получить массив точек из svg path

Можно ли получить массив точек из svg path

Подскажите, можно ли получить массив точек из svg path?

164
Посчитать в функции скидку

Посчитать в функции скидку

Надо записать метод расчета цены с учётом скидкиУ меня выбивает ошибку, хотя я вроде правильно делаю, что неправильно?

155