我有一个页面,基本上是一个div列表;它们的结构并不重要,只要说它们默认都是可见的就足够了。页面上有一些按钮,可以通过java脚本对它们进行排序。例如,如果您单击按钮"完成",该页面仅显示包含代码的div
<div class="ended">complete</div>
如果你按下&#34;显示全部&#34;按钮,它返回显示所有。 (结构类似于
<div class="entry">
<p>something</p>
<div class="ended">complete</div>
et cetera </div>
我最近决定添加一个新按钮,通过它们选择一个随机div。这一切都运作良好,除了当你试图在随机选择它们之后再次显示它们时,它不起作用。
我对JavaScript和JQuery(我从这里找到的脚本改编的随机脚本)并不是那么熟悉,所以我不会这样做。明白什么是错的。
这是(一个)排序脚本的代码:
$('#completed').click(function() {
featureList.filter(function(item) {
if (item.values().ended == "complete") {
return true;
} else {
return false;
}
});
return false;
});
这是&#34;显示所有&#34;的代码。按钮:
$('#filter-none').click(function() {
featureList.filter();
return false;
});
最后,这是&#34;随机&#34;的代码。按钮:
$(document).ready(function () {
$('#random').click(function () {
var E = document.getElementsByClassName("entry");
var m = E.length;
var n = parseInt(Math.random() * m);
for (var i = m - 1; i >= 0; i--) {
var e = E[i];
e.style.display = 'none';
}
E[n].style.display = '';
});
});
答案 0 :(得分:0)
很难在不知道.filter函数内部发生什么的情况下给出答案,但根据您提供的内容可能会有效:
$('#random').click(function () {
var entries = document.getElementsByClassName("entry");
var numEntries = entries.length;
var random = Math.floor(Math.random() * numEntries);
var counter = numEntries;
featureList.filter(function(item) {
counter--;
if (counter === random) {
return true;
} else {
return false;
}
});
return false;
}
我假设在其中返回false
的元素.filter以某种方式隐藏。
由于'全部显示'和'仅显示已完成'正在运行,因此使用“仅显示已完成”方式隐藏“显示随机”中的错误元素应该有效。