javascript: передать объект в javascript, созданный из строки

#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.