Cannot read property 'innerHTML' of undefined [дубликат]

263
21 сентября 2017, 15:54

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

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

Привет всем, мне нужно узнать все имена предметов, которые находят в атрибуте, а в самом атрибуте еще и находятся в html.

Так как предметов много, то мой скрипт должен просканировать все, и выполнить определенный код, но доходя до определенного места он выдает ошибку, ПОМОГИТЕ

Для 1 елемента роботает для многих нет.
для 1 елемента
для n елементов

var char = "uniq",
    block = $(".skinsContainer.skinsContainer-v2 > .skinsItems"),
    jsonCode = "$.parseHTML($(this).find('.skinInfo').attr('data-content'))[0].innerHTML.trim()";
function name() {
    $(block).each(function () {
        var my = type($(this));
        console.log(my);
    });
}
function type() {
    if (char == "attr") {
        console.log('1');
    } else {
        if (char == "html") {
            console.log('2');
        } else {
            console.log('3');
            return eval(jsonCode);
        }
    }
    return undefined;
}
name();

Смотрите консоль.

Ошибка: Uncaught TypeError: Cannot read property 'innerHTML' of undefined

Answer 1

Вы передаете в функцию type() параметр $(this), но эта функция не ждет параметров ...

var char = "uniq",
    block = $(".skinsContainer.skinsContainer-v2 > .skinsItems"),
    jsonCode = "$.parseHTML($elem.find('.skinInfo').attr('data-content'))[0].innerHTML.trim()"; // Тут соответственно меняем $(this) на $elem
function name() {
    $(block).each(function () {
        var my = type($(this));
        console.log(my);
    });
}
function type($elem) { // Функция должна принимать параметр, раз уж он в неё передается
    if (char == "attr") {
        console.log('1');
    } else {
        if (char == "html") {
            console.log('2');
        } else {
            console.log('3');
            return eval(jsonCode);
        }
    }
    return undefined;
}
name();
READ ALSO
Как изменить текст при нажати на button?

Как изменить текст при нажати на button?

Есть такой код для добавления в сравнение:

268
Не работает всплывающее окно

Не работает всплывающее окно

Делаю модальное окно на jquery, но что-то оно не работает

386
jQuery fadeIn fadeOut и его влияние на SEO

jQuery fadeIn fadeOut и его влияние на SEO

Например, если взять такой простой код на jQuery:

240
JS Отключить в select 2 значение выбранное в select 1 и наоборот

JS Отключить в select 2 значение выбранное в select 1 и наоборот

Есть два списка (с мультивыбором) разной направленности но с одинаковым содержимым, если пользователь выбирает что-то в одном, то в другом...

297