私は次のコードを持っています(この場合、入力として供給された有効なhtml文字列から属性を削除する関数と見なされる可能性があります):
function parse(htmlStr)
{
console.log(htmlStr);
result+="<"+htmlStr.tagName.toLowerCase()+">";
var nodes=htmlStr.childNodes;
for(i=0;i<nodes.length;i++) {
var node=nodes[i];
if(node.nodeType==3) {
var text=$.trim(node.nodeValue);
if(text!=="") {
result+=text;
}
}
else if(node.nodeType==1) {
result+=parse(node);
}
}
result+="</"+htmlStr.tagName.toLowerCase()+">";
return result;
}
しかし、期待どおりに機能していません。たとえば、次の場合、入力として次のhtmlをフィードします。
<div id="t2">
Hi I am
<b>
Test
</b>
</div>
を返します<div>Hi I am<div>Hi I am<b>Test</b></div>
。
また、関数に大きな入力が与えられると、ページがクラッシュします。
注:jQueryを使用して文字列から属性を削除するより良い実装があることは知っていますが、ここで上記の関数を操作する必要があります。また、完全なコードは属性を削除するためのものではなく、上記はコードの短縮部分にすぎません。