【js广告切换】
源码解析:
1、HTML结构:
<div id="adcontainer"> <div class="ad" style="display: none;">广告1</div> <div class="ad" style="display: none;">广告2</div> <div class="ad" style="display: none;">广告3</div> </div> <button id="prevBtn">上一个</button> <button id="nextBtn">下一个</button>
2、CSS样式:
#adcontainer { position: relative; } .ad { position: absolute; width: 100%; height: 100%; }
3、JavaScript代码:
let currentAdIndex = 0; // 当前显示的广告索引 const ads = document.querySelectorAll('.ad'); // 获取所有广告元素 const adContainer = document.getElementById('adcontainer'); // 获取广告容器元素 const prevBtn = document.getElementById('prevBtn'); // 获取上一个按钮元素 const nextBtn = document.getElementById('nextBtn'); // 获取下一个按钮元素 // 初始化,显示第一个广告 ads[currentAdIndex].style.display = 'block'; // 上一个广告按钮点击事件处理函数 prevBtn.addEventListener('click', () => { ads[currentAdIndex].style.display = 'none'; // 隐藏当前广告 currentAdIndex = (currentAdIndex 1 + ads.length) % ads.length; // 计算上一个广告的索引 ads[currentAdIndex].style.display = 'block'; // 显示上一个广告 }); // 下一个广告按钮点击事件处理函数 nextBtn.addEventListener('click', () => { ads[currentAdIndex].style.display = 'none'; // 隐藏当前广告 currentAdIndex = (currentAdIndex + 1) % ads.length; // 计算下一个广告的索引 ads[currentAdIndex].style.display = 'block'; // 显示下一个广告 });
相关问题与解答:
问题1:如何实现自动切换广告的功能?
答案1:可以通过使用JavaScript的setInterval
函数来实现自动切换广告,每隔5秒钟切换到下一个广告:
setInterval(() => { ads[currentAdIndex].style.display = 'none'; // 隐藏当前广告 currentAdIndex = (currentAdIndex + 1) % ads.length; // 计算下一个广告的索引 ads[currentAdIndex].style.display = 'block'; // 显示下一个广告 }, 5000); // 5000毫秒即5秒
问题2:如何实现广告轮播图的指示器功能?
答案2:可以在广告容器下方添加一组指示器(通常是小圆点),每个指示器对应一个广告,当广告切换时,相应的指示器会被激活或高亮显示,以下是一个简单的示例:
<div id="indicatorcontainer"> <span class="indicator"></span> <span class="indicator"></span> <span class="indicator"></span> </div>
#indicatorcontainer { display: flex; justifycontent: center; } .indicator { width: 10px; height: 10px; borderradius: 50%; backgroundcolor: gray; margin: 0 5px; }
const indicators = document.querySelectorAll('.indicator'); // 获取所有指示器元素 // 在切换广告时更新指示器状态 function updateIndicators() { indicators.forEach((indicator, index) => { if (index === currentAdIndex) { indicator.style.backgroundColor = 'red'; // 当前广告对应的指示器为红色 } else { indicator.style.backgroundColor = 'gray'; // 其他广告对应的指示器为灰色 } }); } // 修改之前的切换广告函数,加入更新指示器的逻辑 prevBtn.addEventListener('click', () => { ads[currentAdIndex].style.display = 'none'; currentAdIndex = (currentAdIndex 1 + ads.length) % ads.length; ads[currentAdIndex].style.display = 'block'; updateIndicators(); // 更新指示器状态 }); nextBtn.addEventListener('click', () => { ads[currentAdIndex].style.display = 'none'; currentAdIndex = (currentAdIndex + 1) % ads.length; ads[currentAdIndex].style.display = 'block'; updateIndicators(); // 更新指示器状态 });