2つの要素がある場合:
要素A:
<div id="myID">
<div id="a"></div>
<div id="b"><div id="ba"></div></div>
<div id="c"><span id="ca"></span></div>
</div>
および要素B:
<div id="myID">
<div id="a"></div>
<div id="b"><div id="ba"></div></div>
<div id="c"><span id="ca"></span></div>
<div id="d"></div>
</div>
Element B
よりも多くの子があることを見つけて、Element A
追加の要素がどこにあるかを見つけて、それを作成することは可能Element A
ですか?
PS:実際のコードでは、新しい要素がロードされますがAjax Request
、すべてのコンテンツをロードされたコンテンツに置き換えたくないので、新しいコンテンツのみを追加し、既存のコンテンツをスキップする必要があります。
PSS:現在のコードでは、新しいコンテンツが既存のものと同じでないかどうかを確認するMd5チェックサムがありますが、新しいコンテンツにほとんど変更がない場合は、すべてのコンテンツが置き換えられます。これが問題です。
私の現在のコードの一部:
window.processResponse = function(data) {
// Note : "data" is Ajax responseText;
if(!data) return false;
var $data = document.createElement("div");
$data.innerHTML = data;
var em = $data.getElementsByTagName("*");
for(var i = 0; i < em.length; i++)
{
var parent = sget(em[i].id); // sget function is : document.getElementById
if(parent)
{
var html = em[i].innerHTML.replace(/(\s)+/gim, "").replace(/(\n|\r\n)+/gim, "");
var id = em[i].id;
savedPages[id] = savedPages[id] || [];
var _md5 = md5(html);
if(savedPages[id][0] == _md5) continue;
savedPages[id] = [_md5, getTime()];
parent.innerHTML = em[i].innerHTML;
}
if(em[i].tagName === "SCRIPT")
{
var code = em[i].innerHTML.replace(/(\s)+/gim, "").replace(/(\n|\r\n)+/gim, "");
var id = em[i].id;
savedPages[id] = savedPages[id] || [];
var _md5 = md5(code);
if(savedPages[id][0] == _md5) continue;
savedPages[id] = [_md5, getTime()];
try{eval(em[i].innerHTML)}catch(ex){log(ex)};
}
}
};