页面中多组切换按钮— 事件不同

本文介绍了一个使用JavaScript实现的简单图片轮播效果,通过为不同的图片元素绑定点击和鼠标悬停事件来切换图片展示,并附带了完整的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这里写图片描述

左边是点击事件,右边是鼠标移入移出。
如果事件不同(一个是点击事件、一个是鼠标滑动事件),也是在函数调用时传入参数。

html、css和上篇文章一样,这里就不重复。
js:

window.onload = function(){         
    fnTab('pic1',['img/1.jpg','img/2.jpg','img/3.jpg','img/4.jpg'],['海上帆船','小台灯','椰子树','照相机'],'onclick');//鼠标点击事件
    fnTab('pic2',['img/2.jpg','img/3.jpg','img/4.jpg'],['小台灯','椰子树','照相机'],'onmouseover');//鼠标移入移出事件
}   
function fnTab(id,arrUrl,arrTxt,evt){
    // 找元素
    var pic = document.getElementById(id);//参数不需要加引号,只有字符串添加引号
    var imgs = pic.getElementsByTagName('img')[0];
    var lis = pic.getElementsByTagName('li')[0];
    var txt = pic.getElementsByTagName('p')[0];
    var spans= pic.getElementsByTagName('span')[0];
    var uls = pic.getElementsByTagName('ul')[0];
    var lis = uls.getElementsByTagName('li');//找到页面中的li元素,li元素是往里面塞进去的

    // 准备数据
    // 放到参数里了   
    var num = 0;//有数组的地方一般都有数字,因为图片地址配合数字就能找到文字描述

    // 插入标签
    for(var i=0;i<arrUrl.length;i++){
        uls.innerHTML += '<li></li>';//往Ul里添加li就要写成+=,如果是改写就直接写成等号 
    }

    // 初始化,要先插入标签再初始化,顺序不要颠倒,否则会出错
    imgs.src = arrUrl[num];//显示第一张图片
    spans.innerHTML = num+1+'/'+arrUrl.length;//显示上面总张数(自动获取总数)
    txt.innerHTML = arrTxt[num];            
    lis[num].className = 'active';//给当前的li添加类名          

    // 给li添加点击事件,循环li
    for(var i=0;i<lis.length;i++){  
        lis[i].index = i;//自定义属性又叫索引值
        lis[i][evt] = function(){                   
            // 点击任何一个li都要去匹配数组中的图片路径,这种对应关系要用自定义属性
            //alert(this.index);//弹出所点击的li的数字,从0开始
            // 我们要把点击的数字和数组中图片路径相匹配出来
            imgs.src = arrUrl[this.index];//图片路径匹配所点击的li元素
            txt.innerHTML = arrTxt[this.index];//文字描述匹配所点击的li元素
            spans.innerHTML = this.index+1+'/'+arrUrl.length;

            // 按钮的颜色随着鼠标点击来移动
            // 思路一:全部清空,当前添加(全部清除,如果按钮多的话,这个方法不太好)
            for(var i=0;i<lis.length;i++){
                lis[i].className = '';
            }
            this.className = 'active';
        };              
    }
}

如果函数相同,事件不同的话,那么就不能用点onclick例如:
lis[i].onclick = function(){}
应该改成中括号包起来。lis[i][evt] = function(){}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值