如何在这个特定的脚本中使全部展开/全部折叠按钮
How to make expand all/collapse all button in this certain script?
我想在工作中真正需要做的一项简单任务中寻求帮助(我是javascript新手)。我用这个家伙提供的脚本做了一个简单的可折叠列表http://code.stephenmorley.org/javascript/collapsible-lists/但我现在需要的是标题中所述的两个简单按钮:展开所有和折叠整个列表。你们知道这样的东西是否可以在这个特定的脚本中实现吗?请帮助:)
var CollapsibleLists = new function () {
this.apply = function (_1) {
var _2 = document.getElementsByTagName("ul");
for (var _3 = 0; _3 < _2.length; _3++) {
if (_2[_3].className.match(/(^| )collapsibleList( |$)/)) {
this.applyTo(_2[_3], true);
if (!_1) {
var _4 = _2[_3].getElementsByTagName("ul");
for (var _5 = 0; _5 < _4.length; _5++) {
_4[_5].className += " collapsibleList";
}
}
}
}
};
this.applyTo = function (_6, _7) {
var _8 = _6.getElementsByTagName("li");
for (var _9 = 0; _9 < _8.length; _9++) {
if (!_7 || _6 == _8[_9].parentNode) {
if (_8[_9].addEventListener) {
_8[_9].addEventListener("mousedown", function (e) {
e.preventDefault();
}, false);
} else {
_8[_9].attachEvent("onselectstart", function () {
event.returnValue = false;
});
}
if (_8[_9].addEventListener) {
_8[_9].addEventListener("click", _a(_8[_9]), false);
} else {
_8[_9].attachEvent("onclick", _a(_8[_9]));
}
_b(_8[_9]);
}
}
};
function _a(_c) {
return function (e) {
if (!e) {
e = window.event;
}
var _d = (e.target ? e.target : e.srcElement);
while (_d.nodeName != "LI") {
_d = _d.parentNode;
}
if (_d == _c) {
_b(_c);
}
};
};
function _b(_e) {
var _f = _e.className.match(/(^| )collapsibleListClosed( |$)/);
var uls = _e.getElementsByTagName("ul");
for (var _10 = 0; _10 < uls.length; _10++) {
var li = uls[_10];
while (li.nodeName != "LI") {
li = li.parentNode;
}
if (li == _e) {
uls[_10].style.display = (_f ? "block" : "none");
}
}
_e.className = _e.className.replace(/(^| )collapsibleList(Open|Closed)( |$)/, "");
if (uls.length > 0) {
_e.className += " collapsibleList" + (_f ? "Open" : "Closed");
}
};
}();
了解为什么使用订单后遍历很重要。如果您只是从第一个可折叠列表li中进行迭代,则当展开/折叠时,它的"children"可能(将)发生变化,导致在单击()时它们未定义。
在.html 中
<head>
...
<script>
function listExpansion() {
var element = document.getElementById('listHeader');
if (element.innerText == 'Expand All') {
element.innerHTML = 'Collapse All';
CollapsibleLists.collapse(false);
} else {
element.innerHTML = 'Expand All';
CollapsibleLists.collapse(true);
}
}
</script>
...
</head>
<body>
<div class="header" id="listHeader" onClick="listExpansion()">Expand All</div>
<div class="content">
<ul class="collapsibleList" id="hubList"></ul>
</div>
</body>
在您的collapsableLists.js 中
var CollapsibleLists =
new function(){
...
// Post-order traversal of the collapsible list(s)
// if collapse is true, then all list items implode, else they explode.
this.collapse = function(collapse){
// find all elements with class collapsibleList(Open|Closed) and click them
var elements = document.getElementsByClassName('collapsibleList' + (collapse ? 'Open' : 'Closed'));
for (var i = elements.length; i--;) {
elements[i].click();
}
};
...
}();
相关文章:
- 创建一个类似链接的按钮,并通过Javascript函数打开一个新的弹出窗口
- 正在添加'X'按钮,在文本字段旁边使用javascript
- 多个单选按钮组相互干扰
- 如何检查一组单选按钮是否全部选中
- Javascript 打印多个网页 iFrame 内容(全部打印按钮)
- 如何在操作类中识别两个不同的 JSP 页面按钮?如何基于 JSP 页面视图按钮和查看全部按钮编写条件
- 高图表:“全部打印”按钮
- 如果三个特定下拉字段中的三个全部为空,则禁用提交按钮
- 使用jQuery可折叠列表 - 如何更新展开/折叠全部按钮
- 想要禁用我的下一个按钮,直到使用 JavaScript 填充我的全部选项
- 如何使用单个按钮多个发布表单并在新选项卡中全部打开
- 为两个不同的动态生成列表选择“全部”按钮
- 如何在这个特定的脚本中使全部展开/全部折叠按钮
- 创建小计,在连续单击单选按钮时将点相加,而不是一次全部单击
- 购物'查看全部'按钮实现
- 表单:“选择全部”带有多项选择复选框的按钮
- 赢得'不工作“全部检查”按钮
- 替换'全部显示'按钮,带有'少透露'单击
- “视图”页面中的“折叠”面板在“全部”按钮上显示第一条记录
- 单击按钮时加载并执行 PHP 文件的全部内容