利用js闭包获取索引号

以tab选项卡效果为例:

网页中的选项卡效果
如图。
在鼠标点击规则标题的时候下面内容就会切换成规则的内容,这就是一个选项卡切换效果了。
标题和其内容是一一对应的。
在点击的时候就需要得到当前点击的索引号,用jquery的话可以直接通过.index()获取当时元素的索引值,那么用js呢?下面我们来利用js的闭包来实现获取索引。

页面代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <style>
        #box{width:255px;height:20px;list-style: none;}
        #box li{float:left;line-height: 20px;width:49px;border:1px #000 solid;text-align: center;cursor: pointer;}
    </style>
    <ul id="box">
        <li>1</li>
        <li>2</li>
        <li>3</li>
        <li>4</li>
        <li>5</li>
    </ul>
    <script>
        var box = document.getElementById(‘box‘),
        liTag = box.getElementsByTagName(‘li‘),
        length = liTag.length,
        i = 0;
        for(;i<length;i++){
            liTag[i].onclick = (function(i){
                return function(){
                    alert(i);
                }
            })(i);
        }
    </script>

</body>
</html>

在onclick事件执行一个(function(){})()的闭包操作,把每次点击的i传进去这样就能保存起来,从而得到当前的索引值,索引得到了,那选项卡实现起来就简单了对吧。

时间: 2024-10-08 22:11:54

利用js闭包获取索引号的相关文章

Titanium系列--利用js动态获取当前时间

动态获取时间: //显示时间 function getDateTime() { var now = new Date(); var year = now.getFullYear(); var month = now.getMonth()+1; var day = now.getDate(); //var hour = now.getHours(); //var minute = now.getMinutes(); //var second = now.getSeconds(); if(month

JS闭包获取li的index值

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <style type="text/css"> li{ background-color: red; } </style> <script type="text/j

Gridview、DataList、Repeater获取行索引号

Gridview.DataList.Repeater如何获取行索引号?很多情况下都会用得到,下面贴出代码,注意行索引号是从0开始,不是从1开始,如果要从1开始,请在代码里面+1就行了. Gridview示例: <asp:GridView ID="GridView1" runat="server">         <Columns>         <asp:TemplateField>         <ItemTempl

js闭包Demo

我们先看一个关于Javascript利用循环绑定事件的例子: 例如:一个不确定长度的列表,在鼠标经过某一条的时候改变背景. ﹤!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"﹥   ﹤html xmlns="http://www.w3.org/1999/xhtml&qu

利用js输出ul下li的index索引值

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>打印索引</title> </head> <style type="text/css"> li{background: pink;margin-bottom: 10px;height: 40px;} </style> <body>

浅谈js闭包

闭包是js学习中的一个重要知识点,那么js闭包是什么? Js闭包就是一个函数.但是这个函数与js众一般的函数又有一点不同,不同之处在于闭包能够获取其他函数体内的变量.这里简单回顾一下js中有关变量的学习内容:变量声明.变量标识符和变量作用域 .下面一一解释: 变量作用域 ::js中的变量作用域只有两种:局部变量和全局变量:这两者的区别是局部变量是在函数体内定义(js中只有函数能够创建新作用域).全局变量是不在函数内创建或     者不使用var关键字声明的变量称之为局部变量. 变量声明 :: 变

java内部类之js闭包

前言: 今天写了一个关于Java内部的博客,在内部类的最后一点中谈到了Java闭包的概念,他是这样定义闭包的:闭包是一个可调用的对象,它记录了一些信息,这些信息来自创建它的作用域.结合Java的内部类可以很好的理解这一点(如有需要可参考https://www.cnblogs.com/jinliang374003909/p/10351877.html).突然之间想到js中的闭包,一直都无法很好的理解,故借此又看了一下js中的闭包,对我个人而言,感悟良多,借此也与大家分享一下,希望可以帮助大家,并一

js闭包浅了解

js闭包浅理解 要理解闭包,得先知道js的变量作用域,在js中,有两种变量作用域: 全局作用域 局部作用域 一.在函数内可以访问全局变量 比如,下面的例子: <!--lang:js--> <script> var n = 100; function f1(){ console.log(n); } f1()//返回100 </script> 上面的例子很简单,下面是另一种情况. 二.在函数外无法读取函数内的局部变量 还是一个小例子: <!--lang:js-->

Js动态获取iframe子页面的高度总结

问题的缘由 产品有个评论列表引用的是个iframe,高度不固定于是引发这个总结. 方法1:父级页面获取子级页面的高度 给元素设置高度 这方法是用在父级页面里的,通过获取子级页面的高度给iframe设置高度 涉及了一些兼容问题: IE用attachEvent | 3C用onload来判断子页面是否加载完成. IE用contentWindow | 3C用contentDocument来获取子页面 IE用document.documentElement.scrollHeight(兼容ie6 ie7)|