добавить объект к innerHTML и получить этот объект из innerHTML - PullRequest
0 голосов
/ 18 декабря 2011

вот пример в jsfiddle.

Я хочу знать, могу ли я добавить объект javascript к innerHTML, который снова получит этот объект из innerHTML как объект.

что-то вроде,

alert((this.innerHTML).html);

это всего лишь пример, не спрашивайте меня, зачем вам это? Я пытаюсь редактировать существующий код, и я должен сделать это так. Я должен передать объект через div.innerHTML.

Ответы [ 3 ]

2 голосов
/ 18 декабря 2011

Проверьте этот jsfiddle .В нем я добавляю объект в div как атрибут «data-», используя JSON для преобразования его в строку.После этого добавление некоторого комментария в div вызывает обработчик DOMSubtreeModified, в котором html-часть объекта извлекается и получает предупреждение.Это то, с чем можно работать?

1 голос
/ 18 декабря 2011

Было предложено использовать JSON, но без кода.Итак:

function addObjAsJSON(el, obj) {
  el.setAttribute('data-myJSON', encodeURIComponent(JSON.stringify(obj)));
}

function getObjAsJSON(el) {
  return JSON.parse(decodeURIComponent(el.getAttribute('data-myJSON')));
}

Это должно позволить вам добавить что-либо как сериализованный объект, а затем вернуть его обратно.Вы должны добавить некоторую проверку ошибок, чтобы сделать ее более устойчивой (например, убедитесь, что вы возвращаете строку после вызова getAttribute ).

Для пользовательских агентов, которые не имеют встроенныхПоддержка JSON, см. json.org , на который есть ссылка в разделе javascript на json.js .

1 голос
/ 18 декабря 2011

В этом случае вполне возможно, что единственный вариант - преобразовать ваш объект в строку и затем поместить его в элемент.(Это делается путем цикла по ключу, значения строят строку по мере того, как вы идете.)

Вы бы изменили процесс, чтобы преобразовать его обратно в объект.

Я знаю, что некоторые библиотеки JavaScript имеютвспомогательные функции для упрощения этого процесса.

Вы можете попробовать добавить данные непосредственно в элемент dom, а не в его содержимое.

tempDiv.objData = myObject;
...