给大家分享一个比较简单的效果,点击表格每一行变色的几种方法。。。

代码一:

function choose(type,color){
            var lastindex=-1;
            var thistype=document.getElementsByTagName(type);
            for(var i=0;i<thistype.length;i++){
                thistype[i].setAttribute("myindex",i);
            }
            for(var i=0;i<thistype.length;i++){
                thistype[i].onclick=function(){
                    thistype[parseInt(this.getAttribute("myindex"))].style.background=color;
                    if(lastindex==-1){
                        lastindex=parseInt(this.getAttribute("myindex"));
                    }else if(lastindex==parseInt(this.getAttribute("myindex"))){
                    }else{
                        thistype[lastindex].style.background="";
                        lastindex=parseInt(this.getAttribute("myindex"));
                    }
                }
            }
        }

这个代码是在我不知道以下方法之前自己封装的,代码比较多,所以不建议大家学习,没有充分利用js的功能和特点,这个代码是完善了的,需要改变的只有获取标签的问题,

这里我只通过标签来查找,我们可以在这个方法上继续添加代码,使其可以通过name,className查找。

分析下我的这个代码:先设置一个变量,用于存储我点击的这个对象是对应的属性值,目的是我点下次的时候将前一个对象的效果清除,第一个for循环我给每一个标签加了一个自定义属性,目的是下面点击的时候找到该标签是属于哪一个标签,第二个for循环给每个标签加一个点击事件,设置当前这个标签的背景样式,判断语句中,第一个if是将lastindex的初始值变为当前这个标签的属性值,else-if是如果上次点击的标签和这个标签是同一个,则不进行任何操作,else是将上一个标签的样式清除,比保存当前这个标签的属性值。

代码二:

var lastindex=0;function choose(){
            var thistype=document.getElementsByTagName("li");
            for(var i=0;i<thistype.length;i++){
                xx(i);
            }
        }
        function xx(i){
            var thistype=document.getElementsByTagName("li");
            thistype[i].onclick=function(){
                thistype[i].style.background="red";
                thistype[lastindex].style.background="";
                lastindex=i;
            }
        }

这个方法很明显比上面的代码少很多,这里没处理的地方是当我点击的时候没有进行第一个代码的if-else判断,把上面判断的代码复制下来即可,似乎代码也不少,但是这里少了一个循环,对网页来说更优化一些,这个对刚开始学习js来说比较推荐使用,比较好理解。

代码分析:这里基本逻辑是一样的,少了添加属性的过程,第一个function主要是循环,将循环值通过传参数给第二个function,而这个i就是对应的当前的这个标签,称为标识吧

下面上第三种方法,也是我用的最多的方法。

代码三:

var lastindex=0 (function(i){
                thistype[i].onclick=function(){
                 thistype[i].style.background="red";
                 thistype[lastindex].style.background="";
                 lastindex=i;
                 }
             })(i)

先来进行代码分析:这里用到js里面的这个东西(function(){xxxx})(),似乎叫做自执行匿名函数:

1)常见格式:(function() { /* code */ })();

2)解释:包围函数(function(){})的第一对括号向脚本返回未命名的函数,随后一对空括号立即执行返回的未命名函数,括号内为匿名函数的参数。

3)作用:可以用它创建命名空间,只要把自己所有的代码都写在这个特殊的函数包装内,那么外部就不能访问,除非你允许(变量前加上window,这样该函数或变量就成为全局)。各JavaScript库的代码也基本是这种组织形式。

看到这个代码的小伙伴和第一个比较,是不是觉得瞬间少了一大截,需要添加的部分和代码二一样,上面有说明,这个是充分用到了js的特点来做的,多的不说,还不知道的小伙伴们赶紧入手吧。

  这个效果是我们做网页的基本上处处都要用到的,虽然看起来比较简单,但是我们可以用在很多地方,比如QQ空间里面,我们上传的图片都是有时间轴的,在加上这个效果,我们可以做一些点击效果。

  希望看到这个帖子的小伙伴们不要嫌弃我的代码,如果你们有更好的方法,千万不要藏着掖着,和大家分享分享,共同进步!!!!!!

时间: 2024-08-05 05:51:05

给大家分享一个比较简单的效果,点击表格每一行变色的几种方法。。。的相关文章

分享一个购物车的demo(效果高仿饿了么软件的购物效果)

这次分享的是一个很常见的效果,凡是涉及到购物的app或者旅游类以及订餐类的app都有看到过这种效果,两个list view联动显示,添加购物车时的一个抛物线动画实现,以及图标或者item右上角的数字显示.下面是我空闲时候写的一个demo,界面比较陋,但是基本效果都实现了. 不多说,看效果图: 只对添加按钮做了监听,删除没去写(没什么必要). 讲一些主要的代码,想下载源码的可以去这里下载(https://github.com/bobge/LinkedListView.git): 左边的listvi

android 给LinearLayout中添加一定数量的控件,并让着一定数量的控件从右到左移动,每隔若干秒停顿一下,最后一个view链接第一个view,然后继续移动循环往复,形成一个死循环简单动画效果

主类:IndexAnimationLinearLayout.java package com.yw.sortlistview; import java.util.ArrayList; import java.util.List; import android.annotation.SuppressLint; import android.content.Context; import android.graphics.Canvas; import android.os.Handler; impo

分享一个dapper简单封装

using System;using System.Data.Common;using System.Linq;using Dapper;using MySql.Data.MySqlClient; public class DapperBase<T> where T:class,new() { /// <summary> /// 读连接 /// </summary> /// <returns></returns> public DbConnect

分享一个轮播图匀速播放点击

<div class="xinwen"> <div class="xinwen-left"> <div class="neirong9"> <div class="wai" id="lunbo"> <a class="img1" href="#"></a> <a class="im

cocos2dx之实现扑克牌翻转效果的三种方法

*************************************************************************************** 时间:2015-04-10 作者:Sharing_Li 转载注明出处:http://blog.csdn.net/sharing_li/article/details/44980493 **********************************************************************

IOS_视图实现圆角效果的三种方法及比较

通过代码,至少有三种方法可以为视图加上圆角效果.附例子:https://github.com/weipin/RoundedCorner 方法一.layer.cornerRadius 第一种方法最简单,通过层对象的cornerRadius属性实现圆角效果,代码如下: view.layer.cornerRadius = 8.0;view.layer.masksToBounds = YES; 缺点是会有2次rending passes.首先off-screen画出带圆角的图,然后在视图上画第二次. 方

判断一个链表是否有环的几种方法

一.单链表是否有环 思路分析: 单链表有环,是指单链表中某个节点的next指针域指向的是链表中在它之前的某一个节点,这样在链表的尾部形成一个环形结构.判断链表是否有环,有以下几种方法. 1 // 链表的节点结构如下 2 typedef struct node 3 { 4 int data; 5 struct node *next; 6 } NODE; (1)最常用方法:定义两个指针,同时从链表的头节点出发,一个指针一次走一步,另一个指针一次走两步.如果走得快的指针追上了走得慢的指针,那么链表就是

Android 分享一个简单有趣的动画效果

本期开始于大家分享几个简单又有趣的动画 效果图: 效果还是不错的,而实现起来也并没有多大的难度,上代码喽 public int id[] = { R.drawable.fengjing_1, R.drawable.fengjing_2, R.drawable.fengjing_3, R.drawable.fengjing_4, R.drawable.fengjing_5, R.drawable.fengjing_6 }; public String list[] = { "一", &q

分享一个自控小技巧--小任务--简单却十分的有效

场景,话不多说 记不记得自己想做某件事情,比如每天锻炼,但是时常难以开始? 记不记得自己本来计划好的某段时间用来做某件事情,但是一不小心就沉浸于游戏或者电视剧忘了自拔? 记不记得自己计划好的每天晚上花一小时学习某项技能,但是坚持了三天就抛到脑后难以记起了? 我来分享一个关于自控的小技巧,对别人有没有效果我不知道,反正对多年来想要自控多一些的我反正发生了奇效! 技巧就是设定小任务 这个技巧十分的简单,易于执行.就是 设定几个特变简单的.但是每天都要做的小任务. 比如,如果你想要背单词:可以试试设定