关于一个Onclick切换样式的问题

问题描述

想做个点击<li>切换图片的功能,现在碰到一个问题,原本设想的效果是点击一个<li>时背景色变为白色字体变为黑色,再次点击另外一个<li>时原先那个<li>再次变为默认颜色(黑色背景白色字体),但是试了很久都没达到效果。请各位帮忙看看,谢谢。window.onload=function setImage(){var number=document.getElementById("number");var list=number.getElementsByTagName("li");for (var i=0;i<list.length;i++){list[i].flag=true;list[i].onclick=function(){var img=document.getElementsByTagName("img");for (var i=0;i<img.length;i++){if(img[i].src.indexOf(this.lastChild.nodeValue)!=-1){img[i].style.display="";var h3=document.getElementsByTagName("h3")[0];h3.lastChild.nodeValue=img[i].title;}else{img[i].style.display="none";}if(this.flag==true){this.style.backgroundColor="#000";this.style.color="#FFF";this.flag=false;}if(this.flag==false){this.style.backgroundColor="#FFF";this.style.color="#000";this.flag=true;}}}}}<style type="text/css">*{margin:0;padding:0;}#wrapper{margin:10px;width:380px;height:230px;}ul#number{position:absolute;left: 288px;top: 160px;}#number li{float:left;margin-right:10px;border:1px solid #FFF;list-style:none;width:20px;height:20px;color:#fff;text-align:center;cursor:pointer;background:#000;color:#FFF;}#numbercolor{background:#FFF;color:#000;}#title{width:380px;height:50px;background:#000;opacity:0.55;filter: alpha(opacity=55);position:absolute;margin-top:180px;z-index: 999;}#wrapper h3{font-size:14px;color:#FFF;position:absolute;margin-top:180px;line-height:50px;width:380px;height:50px;z-index:1000;text-align:center;}</style><div id="wrapper"><ul id="number"><li>1</li> <li>2</li> <li>3</li></ul><h3>[资源] 测试测试测试</h3><div id="title"></div><img src="images/1.jpg" title="[资源] 测试测试测试" /><img src="images/2.jpg" title="[资源] 测试测试测试" style="display:none;"/><img src="images/3.jpg" title="[资源] 测试测试测试" style="display:none;"/></div> 问题补充:andy_javahome 写道

解决方案

你是不是要这个样子的。 window.onload=function setImage(){ var number=document.getElementById("number"); var list=number.getElementsByTagName("li"); for (var i=0;i<list.length;i++){ list[i].onclick=function(){ var img=document.getElementsByTagName("img"); for (var i=0;i<img.length;i++){ //让ul下的li都回复默认样式 var listul=number.getElementsByTagName("ul"); number.children[i].style.backgroundColor="#FFF"; number.children[i].style.color="#000"; var nvalue = this.lastChild.nodeValue; bnvalue = nvalue.replace(/(s*)|(r)|(n)/g, ""); if(img[i].src.indexOf(bnvalue)!=-1){ img[i].style.display="block"; var h3=document.getElementsByTagName("h3")[0]; h3.lastChild.nodeValue=img[i].title; }else{ img[i].style.display="none"; } } //被点击li的样式改变 this.style.backgroundColor="#000"; this.style.color="#FFF"; } } }
解决方案二:
你可以拷过去运行一下,我测试没问题,献丑了
解决方案三:
问题找半天找到了,this.lastChild.nodeValue里面有回车或者换行或者空格。我用 var nvalue = this.lastChild.nodeValue; bnvalue = nvalue .replace(/(s*)|(r)|(n)/g, ""); 不过你的那种比较有点儿危险,比如nvalue的值都在img[i].src中有,这样会把多个图片显示出来的 。

时间: 2024-11-08 23:10:30

关于一个Onclick切换样式的问题的相关文章

android-把ViewPager 从一个fragment切换到另一个fragment中

问题描述 把ViewPager 从一个fragment切换到另一个fragment中 Viewpager 中有两个pages,在每一个 fragment中,我放入一个按钮到switching fragment中,但是如果我改变方向,switching不能运行.对于switching fragment,我使用的是 OnChangePageButtonClick 接口.为什么会出现这种情况呢?ViewPager Activity: public class ViewPagerMusic extend

在table中tr标签中有一个onclick()事件,

问题描述 在table中tr标签中有一个onclick()事件, 现在我点击tr下的任一个td都会触发事件,怎么才能让第一个td不触事件 <table> <tr onclick="函数"> <td><input type="checkbox" --/></td> <td></td> --这里有n个td <td></td> <td></td&g

求帮忙写一个div的样式

问题描述 求帮忙写一个div的样式 谁的css水平高啊,帮我用css帮忙写一个div的样式吧. 宽度和高度我都可以自己来设定. 其实是一个弹出框,所以希望弹出div之后背景变为灰色(可以用jQuery来实现) 标题一个div,内容一个div 解决方案 找artDialoghttp://lab.seaning.com/ 解决方案二: 一个DIV样式测试用例

asp.net 我想在imagebutton上面加一个onclick的属性,能够实现页面跳转

问题描述 asp.net 我想在imagebutton上面加一个onclick的属性,能够实现页面跳转 页面上有52个imagebutton,所以我现在实现了遍历以后,能够给所有按钮增加一个onclick跳转页面的属性,但是怎么弄也实现不了这个功能,但是鼠标移上去改变背景图片已经实现了 if(c is ImageButton) { ImageButton btn = (System.Web.UI.WebControls.ImageButton)c; string str = btn.ImageU

多个菜单项 共用一个OnClick处理程序

问题描述 我看到代码中这么定义的this.exitToolStripMenuItem.Click+=newSystem.EventHandler(this.exitToolStripMenuItem_Click);我想在exitToolStripMenuItem_Click函数中获取被点击菜单的索引,然后我就可以根据索引做不同的操作,可是类ToolStripMenuItem中没有这个属性,有什么办法可以获取到吗? 解决方案 解决方案二:本帖最后由 bdmh 于 2012-03-15 12:59:

c++-我想创建可以在任何一个OnClick事件中调用的函数,怎么写?

问题描述 我想创建可以在任何一个OnClick事件中调用的函数,怎么写? 现在有一个单文档MFC程序,我想创建一个全局的函数或者类,可以在任何一个OnClick事件中调用,请问应该怎么写? 我是这样做的,定义了一个类A,然后A中的函数比如void b()是public的,在其他onclick事件中创建一个A的对象a,a.b();编译没问题,可是一连接就报错,为什么?我应该怎么写? 解决方案 如果单纯的想将OnClick中的功能分离成一个函数的话,你可以在OnClick这个函数所在的类比如说,CE

图片-第一个activity切换到第二个activity后组件不显示

问题描述 第一个activity切换到第二个activity后组件不显示 两个activity切换,第二个avtivity将数据返回给第一个activity.但是切换到第二个activity后组件不显示 Activity01: Activity02: 布局1: 布局2: 配置文件: 解决方案 resultCode== Activity.RESULT_OK 改成这样就好了

java 图形界面一个窗口切换到另一窗口的时候,窗口的背景图不见了,何解呢?

问题描述 java图形界面一个窗口切换到另一窗口的时候,窗口的背景图不见了,何解呢?每个窗口单独运行的时候是没有问题的,一通过其他窗口开启显示就有问题.我插入背景的方法是:ImageIconimg1=newImageIcon(MusicShareClient.class.getResource("Image/Login.jpg"));JLabelbg=newJLabel(img1);inst.setLayout(null);inst.getLayeredPane().add(bg,-3

做一个城市切换,为什么达不到效果

问题描述 我做一个城市切换,首先判断如果是输入顶级域名进来就直接根据IP定位,如果不是就直接保存COOKIES,但是现在遇到问题就是COOKIES里面的值为空StringBuildercityString=newStringBuilder();stringipaddress=System.Web.HttpContext.Current.Request.UserHostAddress;stringstr=HttpContext.Current.Request.Url.Host.ToLower();