Вы не можете встроить экземпляр Function
в строку.
Если переменная buttons
является глобальной, она будет доступна для кода внутри атрибута обработчика события onclick
:
var htmlbutton= '<button type="button" onclick="buttons[\''+buttonName+'\']()">'+buttonName+'</button>'
Однако в приведенном выше коде экранирования нет, поэтому у вас будут проблемы (возможно, проблемы с безопасностью), если buttonName
может содержать символы <
, &
, '
или "
,Вам придется избегать их различными способами для JavaScript и HTML, в которые вы встраиваете строки.
Гораздо лучше избегать слинга строк для создания HTML вообще.Тогда вы можете использовать методы DOM и нативные объекты JavaScript и избежать всей запутанной гадости строк-внутри-строк.
var button= document.createElement('button');
button.type= 'button';
button.appendChild(document.createTextNode(buttonName));
button.onclick= buttons[buttonsName];