色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

element對(duì)象轉(zhuǎn)json

在 JavaScript 中,我們可以使用 element 對(duì)象表示一個(gè) HTML 元素,而 JSON 是一種數(shù)據(jù)格式,能夠方便地表示復(fù)雜的數(shù)據(jù)結(jié)構(gòu)。我們可能會(huì)遇到將 element 對(duì)象轉(zhuǎn)換為 JSON 數(shù)據(jù)的需求。

要將 element 對(duì)象轉(zhuǎn)換為 JSON,我們需要使用以下代碼:

JSON.stringify(element)

這個(gè)方法的作用是將 JavaScript 對(duì)象轉(zhuǎn)換為 JSON 字符串。但由于 element 對(duì)象上存在很多引用型屬性,如父節(jié)點(diǎn)、子節(jié)點(diǎn)等,如果直接使用上述代碼,可能會(huì)拋出TypeError: Converting circular structure to JSON的異常。

為了解決這個(gè)問(wèn)題,我們可以使用elemToObj函數(shù),將 element 對(duì)象遞歸轉(zhuǎn)換為 JavaScript 對(duì)象:

function elemToObj(elem) {
const obj = {};
if (elem.nodeType === Node.TEXT_NODE) {
obj.text = elem.textContent.trim();
} else if (elem.nodeType === Node.ELEMENT_NODE) {
obj.tag = elem.tagName.toLowerCase();
const attrs = elem.attributes;
for (let i = 0; i< attrs.length; i++) {
obj[attrs[i].name] = attrs[i].value;
}
const children = elem.childNodes;
if (children.length) {
obj.children = [];
for (let i = 0; i< children.length; i++) {
if (children[i].nodeType !== Node.COMMENT_NODE) {
obj.children.push(elemToObj(children[i]));
}
}
}
}
return obj;
}

這個(gè)函數(shù)首先判斷 elem 是文本節(jié)點(diǎn)還是元素節(jié)點(diǎn),如果是文本節(jié)點(diǎn),將其轉(zhuǎn)換為一個(gè) JavaScript 對(duì)象,只包含一個(gè) text 屬性,存儲(chǔ)文本內(nèi)容。如果是元素節(jié)點(diǎn),將其轉(zhuǎn)換為一個(gè)包含 tag、attributes 和 children 等屬性的對(duì)象。其中 attributes 屬性存儲(chǔ)元素節(jié)點(diǎn)的屬性和值,children 屬性存儲(chǔ)該元素的子元素。

在得到轉(zhuǎn)換后的 JavaScript 對(duì)象后,我們可以再將其轉(zhuǎn)換為 JSON 字符串,代碼如下:

const obj = elemToObj(element);
const json = JSON.stringify(obj);

這樣,我們就可以將 element 對(duì)象轉(zhuǎn)換為 JSON 數(shù)據(jù)了。