#javascript #html #object
#javascript #HTML #объект
Вопрос:
Возможно ли передать объект в javascript, когда он создается из строки?
Я пробовал это, но, похоже, это не сработает :
var myobject = {name:"auto",color:"blue"};
var btn = "<button type='button' onclick='myfunc(" myobject ");'>Edit</button>";
Если я проверю событие onclick, объект будет выглядеть так : [object Object]
Комментарии:
1. Вы можете это сделать, но вам нужно будет закодировать его в строку. Вы можете использовать
JSON.stringify()
для этого. И затем вам нужно будет выполнить экранирование для HTML (или установить значение атрибута напрямую). На самом деле, не делайте того, что вы делаете. Добавьте соответствующий обработчик событий и сделайте это намного проще для себя. Также рассмотрите возможность использованияdata-*
атрибутов, если данные об элементе более подходят, и тогда вы можете назначить единый обработчик нажатия для всех ваших кнопок.2. Эмпирическое правило: при работе в JavaScript предпочитайте манипуляции с DOM, а не со строками.
Ответ №1:
Может быть, это возможно, но это очень неправильная практика.
Лучше использовать вторую функцию:
var myobject = {name: "auto", color: "blue"},
btn = "<button type='button' onclick='myfunc2()'>Edit</button>",
myfunc = function(obj) {
// some function
},
myfunc2 = function() {
myfunc(myobject);
};
Используя формат объекта JSON, сделайте ваше приложение открытым для любых инъекций. Итак, попробуйте провести рефакторинг вашего кода. И убедитесь, что вам это действительно нужно.
Ответ №2:
вы могли бы упорядочить объект следующим образом :
"(" JSON.stringify(myobject) ")"
интересно, почему вы не просто
onclick='myfunc(myobject);'
если переменная myobject установлена в момент щелчка, она подойдет
Комментарии:
1. Этого недостаточно. Данные также должны быть экранированы для HTML.