如何通过纯javascript中的每次点击来选择循环中下一个特定数量的元素?

2023-12-14

我试图为每次单击“下一步”按钮选择接下来的 3 个项目(nextElementSiblings)。项目长度为 14。直到项目 12 为止它都工作正常。在项目 12 之后,它检查接下来的 3 个项目,但循环中只剩下 2 个项目(十三个 13、十三个 14)。所以它无法选择最后 2 项。当循环结束时剩余的项目少于 3 时,如何更改此处的条件。并在“下一步”按钮到达结束时禁用 onclick 功能。并在单击“上一个”按钮后启用它。

var next = document.getElementById("next"),
	list = document.getElementById("list");
	
var li = list.getElementsByTagName("DIV");
	
for (var i = 0; i < li.length; i++) {
	li[i].style.display = "0px solid transparent";
}

for (var i = 0; i < 3; i++) {
	li[i].style.border = "1px solid red";
}

var nextfun = (function(){
	
	var nextitems = 4;
	var prevItems = 1;
	
	return function(){
		nextitems = nextitems + 2;
		prevItems = nextitems - 3;
		
		for (var i = 0; i < nextitems; i++) {
			
			li[i].style.border = "1px solid red";

			if(nextitems >= li.length){
				li[i].style.border = "1px solid red";
				//nextitems = 2;
				break;
				//this.pointerEvents = "none";
			}
		}
		
		for (var i = 0; i < prevItems; i++) {
			li[i].style.border = "0px solid transparent";
			
			if(prevItems <= li.length){
				prevItems = nextitems - 3;
				li[i].style.border = "1px solid transparent";
			}
			
		}
		
		return ++nextitems;
		//return --prevItems;
	}
})();
<div id="list">	
	<div> one 1</div>
	<div> two 2</div>
	<div> three 3</div>
	<div> four 4</div>
	<div> five 5</div>
	<div> six 6</div>
	<div> seven 7</div>
	<div> eight 8</div>
	<div> nine 9 </div>
	<div> ten 10</div>
	<div> eleven 11</div>
	<div> twelve 12</div>
	<div> thirteen 13</div>
	<div> fourteen 14</div>
</div>

<button id="prev" onclick="prevfun()">PREVIOUS 3</button>
<button id="next" onclick="nextfun()">NEXT 3</button>

我建议仅使用一个变量作为标记项目的开头,并检查该项目是否在标记为红色的 inverval 中。

var next = document.getElementById("next"),
    list = document.getElementById("list"),
    li = list.getElementsByTagName("DIV"),
    i,
    nextfun = (function () {
        var item = 3;
        return function () {
            for (var i = 0; i < li.length; i++) {
                li[i].style.border = i >= item && i < item + 3 ? "1px solid red" : "0px solid transparent";
            }
            item += 3;
        }
    })();


for (i = 0; i < li.length; i++) {
    li[i].style.border = "0px solid transparent";
}

for (var i = 0; i < 3; i++) {
    li[i].style.border = "1px solid red";
}
<div id="list"><div> one 1</div><div> two 2</div><div> three 3</div><div> four 4</div><div> five 5</div><div> six 6</div><div> seven 7</div><div> eight 8</div>	<div> nine 9 </div><div> ten 10</div><div> eleven 11</div><div> twelve 12</div><div> thirteen 13</div><div> fourteen 14</div></div>
<button id="prev" onclick="prevfun()">PREVIOUS 3</button>
<button id="next" onclick="nextfun()">NEXT 3</button>

稍微好一点的版本,带有按钮封装。

function Button(count) {
    function setBorder() {
        var i,
            li = list.getElementsByTagName("DIV"),
            l = li.length;

        document.getElementById('prev').disabled = index <= 0;
        document.getElementById('next').disabled = index + count >= l;
        for (i = 0; i < l; i++) {
            li[i].style.border = i >= index && i < index + 3 ? "1px solid red" : "0px solid transparent";
        }
    }

    var index = 0;

    this.next = function () {
        index += count;
        setBorder();
    };
    this.prev = function () {
        index -= count;
        setBorder();
    };
    setBorder();
}

var button = new Button(3);
<div id="list"><div> one 1</div><div> two 2</div><div> three 3</div><div> four 4</div><div> five 5</div><div> six 6</div><div> seven 7</div><div> eight 8</div>	<div> nine 9 </div><div> ten 10</div><div> eleven 11</div><div> twelve 12</div><div> thirteen 13</div><div> fourteen 14</div></div>
<button id="prev" onclick="button.prev()">PREVIOUS 3</button>
<button id="next" onclick="button.next()">NEXT 3</button>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何通过纯javascript中的每次点击来选择循环中下一个特定数量的元素? 的相关文章

随机推荐

  • iOS 内存泄漏

    我运行了 Leaks 工具来测试我的应用程序是否有任何泄漏 它显示我有一些泄漏 我不是修复泄漏的专家 我想知道是否 我有泄漏 并且 我应该做什么来解决它 你看起来似乎有泄漏 但看起来并不严重 您可以单击内存地址旁边的小箭头 它应该会显示一个
  • Python - 为什么在类中使用“self”?

    这两个类有何不同 class A x 3 class B def init self self x 3 有什么显着差异吗 A x is a 类变量 B s self x is an 实例变量 i e A s x在实例之间共享 通过像列表这样
  • 正确设置动态下拉菜单的回调

    我正在尝试创建一个 Dash 仪表板 其中一个框中的下拉选项取决于之前的下拉选择 该数据由两个字典组成 每个字典有两个键 每个键都包含一个带有几列的数据框 确切数据 from jupyter dash import JupyterDash
  • 如何创建一个胖罐子?

    有了SpringBoot 你就拥有了 SpringBootApplication注解 但是与简洁的 Java Spark 框架等效的是什么呢 IntelliJ 创建了一个 Maven 项目 我添加了 Spark 依赖项 但运行安装目标时 我
  • 如何为结构的可变引用中的字段交换新值?

    我有一个带有字段的结构 struct A field SomeType Given a mut A 我怎样才能移动的值field并交换一个新值 fn foo a mut A let mut my local var a field a fi
  • php 中 var-export 函数的反义词是什么?

    我通过 将变量导出到文本区域变量导出 schools true 这样用户就可以编辑它 然后我想用所做的更改来 更新 变量 更新是通过 POST 方法接收的 我有一些text我想要成为变量 我怎样才能做到这一点 我现在所做的是在 php 文件
  • 如何在 CultureInfo(c#) 中显示尼日利亚奈拉符号

    我想显示带有尼日利亚货币符号的金额 即 N 带有双删除线 我已经尝试过 ff 段代码 它只显示带有 N 的金额 而不是带有正确的符号 N 带有双删除线 IFormatProvider currencyFormat new System Gl
  • Outlook REST API - getFolders 不返回所有文件夹

    我刚刚开始使用 Outlook REST API 我的基准是使用node outlook的教程 第一个任务是检索我的邮件帐户中的所有文件夹 所以我发出这个 REST 请求 GET https outlook office com api v
  • UTF-8 和 os.listdir()

    我在处理包含 字符的文件时遇到了一些麻烦 即 xC8 x99采用 UTF 8 拉丁文小写字母 S 下面带逗号 我正在创建一个 txt文件并尝试将其恢复os listdir 很遗憾 os listdir 将其返回为s xCC xA6 s 下面
  • 何时使用 toString() 方法

    这听起来可能非常基本 有人可以解释一下toString 方法以及何时有效使用该方法 在谷歌上进行了搜索 但找不到任何好的资源 在大多数语言中 toString或者等效的方法只是保证一个对象可以用文本表示 这对于日志记录 调试或任何其他需要能
  • Android:FragmentTabHost - java.lang.IllegalArgumentException:您必须指定一种创建选项卡内容的方法

    我在课堂上有以下内容用于创建FragmentTabHost public class TabsActivity extends FragmentActivity private FragmentTabHost mTabHost Overri
  • 双向重复测量ANOVA python函数

    预先感谢您的任何答复 我想在 python 中进行 2 路重复测量方差分析 其中一个 IV 有 5 个级别 其他 4 个级别 有一个 DV 我尝试查看 scipy 文档和一些在线博客 但似乎找不到任何东西 您可以使用rm anovaPino
  • 我希望能够通过网络从 BIOS 提取错误日志

    我希望能够通过网络从 BIOS 提取错误日志 查看 MSDN 中的 Win32 BIOS 我没有看到任何定义错误日志的内容 很乐意在 C 中使用 WMI 来完成此操作 但我愿意接受建议 是否可以 Win32 BIOS 没有包含 BIOS 错
  • 为什么在 PHP 中使用 ORM?

    最近开始学习ORM 突然想到一个问题 PHP 应用程序主要使用 MySql 和 Sqlite 几乎所有 PHP 服务器都安装了它们 那么是否值得在 PHP 中使用 ORM 来独立于数据库呢 性能怎么样 数据库独立性并不是使用 ORM 的主要
  • Jquery 自动完成 - 无结果消息

    我希望自动完成在下拉列表中显示 无结果 如果没有找到结果 则列出 我的情况就像 JQuery 默认示例 function var availableTags ActionScript AppleScript Asp BASIC C C Cl
  • R Shiny:Vtree 图未使用 Shiny 渲染

    如何在闪亮中使用 vtree 包 尝试从服务器端渲染时 没有出现所需的绘图 我的代码 library shiny library vtree Define UI ui lt pageWithSidebar App title headerP
  • ColdFusion、MS Word 文档和希腊字符

    我正在尝试从数据库动态构建 Word 文档 我使用 CFC 进行查询处理 我的努力是成功的 但我只能复制英语文档 但是 我的应用程序使用希腊语 当我尝试构建包含希腊字符的文档时 输出如下所示 我尝试了很多事情但没有任何效果 这里奇怪的是 当
  • 以天:小时:分钟:秒格式计算 SQL 中的 DateDiff

    我目前正在使用 SQL 脚本来计算两个日期之间的差异 这将为我提供 DD HH MI SEC 格式的结果 例子 日期 1 2012 年 7 月 30 日 下午 4 00 日期 2 2012 年 5 月 4 日上午 10 31 结果应该是 8
  • 当 puppet-rspec 存在时,为什么我会收到“类不存在”?

    我设置了一个新的木偶demo模块具有以下内容Gemfile当我运行一个简单的 puppet rspec 测试时 它按预期工作 Gemfile source https rubygems org if puppetversion ENV PU
  • 如何通过纯javascript中的每次点击来选择循环中下一个特定数量的元素?

    我试图为每次单击 下一步 按钮选择接下来的 3 个项目 nextElementSiblings 项目长度为 14 直到项目 12 为止它都工作正常 在项目 12 之后 它检查接下来的 3 个项目 但循环中只剩下 2 个项目 十三个 13 十