function get_related_indented_node(clicked)
{
var article = clicked.parentNode.parentNode.parentNode.parentNode;
var next_sibling = article.nextSibling;
var seek = true;
while (seek)
{
if (next_sibling.nextSibling == undefined)
{
seek = false;
}
if ((next_sibling.classList != undefined) && (next_sibling.classList.contains('indented')))
{
return next_sibling;
}
if (seek)
{
next_sibling = next_sibling.nextSibling;
}
}
return undefined;
}
function toggle_tree(el)
{
var indented = get_related_indented_node(el);
if (indented != undefined)
{
if (el.dataset['tree_closed'] != '1')
{
indented.style.height = '0px';
indented.style.overflow = 'hidden';
el.innerText = '[open tree]';
el.dataset['tree_closed'] = '1';
}
else
{
indented.style.height = '';
indented.style.overflow = '';
el.innerText = '[close tree]';
el.dataset['tree_closed'] = '0';
}
}
}
function toggle_children(el)
{
var indented = get_related_indented_node(el);
if (indented != undefined)
{
var sub_indented = indented.getElementsByClassName('indented');
if ((sub_indented != undefined) && (sub_indented.length != undefined) && (sub_indented.length > 0))
{
var closed = el.dataset['children_closed'] != '1';
if (closed)
{
var height = '0px';
var overflow = 'hidden';
el.innerText = '[open children]';
el.dataset['children_closed'] = '1';
}
else
{
var height = '';
var overflow = '';
el.innerText = '[close children]';
el.dataset['children_closed'] = '0';
}
for (var j = 0; j < sub_indented.length; ++j)
{
sub_indented[j].style.height = height;
sub_indented[j].style.overflow = overflow;
}
var sub_tree_closers = indented.getElementsByClassName('tree_closer');
if ((sub_tree_closers != undefined) && (sub_tree_closers.length != undefined) && (sub_tree_closers.length > 0))
{
for (var j = 0; j < sub_tree_closers.length; ++j)
{
sub_tree_closers[j].innerText = closed ? '[open tree]' : '[close tree]';
sub_tree_closers[j].dataset['tree_closed'] = closed ? '1' : '0';
}
}
}
}
}
function closeupable_hup()
{
var tree_closer = document.createElement('SPAN');
tree_closer.className = 'tree_closer';
tree_closer.innerText = '[close tree]';
tree_closer.style.cursor = 'pointer';
tree_closer.dataset['tree_closed'] = '0';
var tree_closerc;
var children_closer = document.createElement('SPAN');
children_closer.className = 'children_closer';
children_closer.innerText = '[close children]';
children_closer.style.cursor = 'pointer';
children_closer.dataset['children_closed'] = '0';
var children_closerc;
var comments = document.getElementsByClassName('comment');
if ((comments != undefined) && (comments.length != undefined))
{
for (var i = 0; i < comments.length; ++i)
{
var submitted = comments[i].getElementsByClassName('comment__submitted');
if ((submitted != undefined) && (submitted.length != undefined) && (submitted.length > 0))
{
tree_closerc = tree_closer.cloneNode(true);
tree_closerc.onclick = function ()
{
toggle_tree(this);
};
children_closerc = children_closer.cloneNode(true);
children_closerc.onclick = function ()
{
toggle_children(this);
};
submitted[0].appendChild(tree_closerc);
submitted[0].appendChild(children_closerc);
}
}
}
}
- TCH blogja
- A hozzászóláshoz be kell jelentkezni
- 292 megtekintés
Hozzászólások
+1
chrome alatt sajnos nem megy igy elsore, de majd meg nezegetem. legalabbis ha azt mondom a "Custom JavaScript for Websites 2"-nek hogy window.onload=function() { alert("xyz!"); } az jo, de ha alert() helyett closeable_hup();-ot hivok akkor nemsokmindent csinal...
- A hozzászóláshoz be kell jelentkezni
A 12-es Operában a .cloneNode()
akkor is klónozta az egészet, ha nem volt átadva neki, hogy a deep
copy az true
. Köszi, hogy szóltál, fixed.
- A hozzászóláshoz be kell jelentkezni
Koszi! Frissitettem de meg mindig nem jo :( Nem vagyok egy nagy dzsavaszkript-magus, szoval jo kerdes hogy igy krom alatt hogyan tudnam most ezt ennel jobban kidebbugolni. De hasznos featura lenne ez, elegge, az biztos :) Ah, szerk: megiscsak jo :) valamiert az ujrainditas mindig csodakra kepes... de erdekes mert a fentebbi alert()-es teszteknel meg nem kellett :/ Valodi internet!
- A hozzászóláshoz be kell jelentkezni
Talán beragadt a browsercache-be.
- A hozzászóláshoz be kell jelentkezni
Klassz, köszi! 👍
- A hozzászóláshoz be kell jelentkezni