Как вызвать функцию с аргументами из динамического html?

180
19 октября 2018, 07:40

У меня функция генерирует html.

function text(massive){
    var text  = '<button oclick='get_func(massive);'></button>';
    document.getElementById("block_to_dynamic_pole_adv").innerHtml = text;
}

как мне вызвать функцию get_func с аргументом правильно, если сейчас ошибка вылазит , т.к massive - это объект с данными ?

Answer 1

Проблема заключается в неверном способе собирания строки:

внутри одинарных кавычек нельзя использовать неэкранированные одинарные кавычки.

Для экранирования можно воспользоваться обратным слэшем.

Либо использовать разный тип кавычек, например:

function text(massive){
    var text  = "<button oclick='get_func(massive);'></button>";
    document.getElementById("block_to_dynamic_pole_adv").innerHtml = text;
}

Однако в этом случае и функция get_func и переменная massive должны быть объявлены глобально.

Если нужно, чтобы передавался параметр функции text, то с помощью сбора строк такое можно реализовать только есть параметр можно сериализовать в строку, например:

function text(massive){
    var text  = `<button oclick='get_func(${JSON.stringify(massive)});'></button>`;
    document.getElementById("block_to_dynamic_pole_adv").innerHtml = text;
}

В противном случае лучше создавать элементы самому:

function text(massive){
    var text  = document.createElement('button');
    text.onclick = function(){
        get_func(massive);
    };
    document.getElementById("block_to_dynamic_pole_adv").appendChild(text);
}

В ответе использовались методы document.createElement, .appendChild, а также шаблонные строки и JSON.stringify

READ ALSO
Доп. условие на js

Доп. условие на js

День добрый! Подскажите, есть код

165
Не запускается gulp browser-sync

Не запускается gulp browser-sync

Вот делаю по оф докам

211
Как узнать размер кэша браузера через javascript/jquery?

Как узнать размер кэша браузера через javascript/jquery?

Имеется ссылка, при нажатии, у пользователя грузиться файл с сервера, можно ли как то узнать размер кэша у браузера через javascript/jquery, после...

174
Публикация записей через Facebook JS API

Публикация записей через Facebook JS API

Товарищи, как заставить ФБ делать записи используя их же апиУ меня просто не хочет выполняться авторизация при вставленном примере их кода

158