关于6-2作业问题,点击切换这里出了点问题,大神来帮我看一下

关于6-2作业问题,点击切换这里出了点问题,大神来帮我看一下

这是HTML代码:

<!doctype html>

<html>

<head>

<meta charset="utf-8">

<title>无标题文档</title>

<link rel="stylesheet" href="css/imooc6-2style.css">

</head>


<body>

<div class="main-box" id="mainBox">

   <!---顶部文字区域----->

   <div class="top-bar" id="topBar">

    <a href="javascript:void(0)" class="button">首页</a>

    <a href="javascript:void(0)" class="button">点击查看</a>

    <a href="javascript:void(0)" class="button">会自动的</a>

    <a href="javascript:void(0)" class="button">我的网站</a>

   </div>

   <!----图片区域----->

   <div class="img-bar" id="imgBar">

       <a href="#"><div class="img-box img1 img-active"></div></a>

        <a href="#"><div class="img-box img2"></div></a>

         <a href="#"><div class="img-box img3"></div></a>

          <a href="#"><div class="img-box img4"></div></a>

   </div>

</div>

<script src="js/imooc6-2task.js"></script>

</body>

</html>

这是CSS代码:

*{

margin:0;

padding:0;

}

body{

    font-family:"微软雅黑";

color:#666;

}

a{

text-decoration:none;

color:#666;

}

.main-box{

width:1200px;

height:520px;

margin:0 auto;

margin-top:20px;

background:#ccc;

overflow:hidden;

position:relative;

}

.top-bar{

width:1200px;;

height:60px;

background:#ff0;

}

.top-bar .button{

display:block;

width:300px;

height:60px;

font-size:22px;

line-height:60px;

text-align:center;

float:left;

}

/*.button:hover{

    background:#f00;

opacity:0.7;

filter:alpha(opacity=80);

}*/

.word-active{

background:#0f0;

}

.img-bar{

width:1200px;

height:460px;

overflow:hidden;

position:relative;

}

.img-bar .img-box{

     width:1200px;

height:460px;

background:no-repeat;

position:absolute;

display:none;

}

.img-bar .img-active{

display:block;

}

.img-bar .img1{

background-image:url(../sumimg/img/1.jpg);

}

.img-bar .img2{

background-image:url(../sumimg/img/3.jpg);

}

.img-bar .img3{

background-image:url(../sumimg/img/4.jpg);

}

.img-bar .img4{

background-image:url(../sumimg/img/5.jpg);

}

这是JS代码:

//封装一个代替document.getElementById()的方法

function byId(id){

   return typeof(id)==="string"?document.getElementById(id):id;

}

//声明全局变量

var index=0,timer=null,topBar=byId("topBar").getElementsByTagName("a"),toplen=topBar.length,imgBar=byId("imgBar").getElementsByTagName("div"),imglen=imgBar.length,topBtn;


//封装图片和顶部文字自动切换

function imgSlide(){

var mainBox=byId("mainBox");

//鼠标滑过整个页面,清除定时器,鼠标标离开整个页面,定时器继续

mainBox.onmouseover = function(){

  //鼠标滑过清除定时器

if(timer) clearInterval(timer);

}

mainBox.onmouseout = function(){

//鼠标离开页面定时器开始

timer=setInterval(function(){

index++;

if(index>=imglen){

index=0;

}

//调动切换图片函数自动切换图片

changeImg();

},1000)

}

//自动在mainBox上自动触发鼠标离开的事件

mainBox.onmouseout();

}


//遍历所有的a标签,给每个a标签添加一个ID,绑定点击切换图片和背景改变事件

for(var j=0;j<toplen;j++){

topBar[j].id="btn";

console.log(topBar[j])

}

topBtn=byId("btn");

//封装切换图片函数

function changeImg(){

//遍历所有的div和a标签,div全部隐藏,a标签里的背景颜色都为透明

for(var i=0;i<imglen;i++){

   imgBar[i].style.display="none";

topBar[i].style.background="transparent";

}

//这里根据index索引的值去把对应的div的display改为block和改变对应的A标签的背景颜色

imgBar[index].style.display="block";

topBar[index].style.background="#f00";

}

imgSlide();

前面的轮播图片和文字部分的自动切换已经弄好了,但是点击切换相应的图片和文字背景更换出了点问题,就是这段代码:

for(var j=0;j<toplen;j++){

topBar[j].id="btn";

console.log(topBar[j])

}

topBtn=byId("btn");

console.log(topBtn);

这里为什么打印出来,就只有一个首页?接下来怎么完善,求高手指点

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
小于飞飞 2017-04-18 16:31:12

你好,是想实现点击菜单,图片切换和文字背景发生变化,建议:

  1.  topBar[j].id="btn"; 循环的几个菜单的id都是 btn ,注意id 最好不要重名。

  2. 修改成topBar[j].id=j ; 每个菜单有个不同的id

  3. 然后添加单击事件

topBar[j].onclick = function() {
                index = this.id;
                changeImg();
            }

通过这个代码,记录点击的那个菜单,然后调用changeImg(); ,该函数中就有 文字背景的改变。

希望对你有帮助,祝学习愉快。

  • 提问者 晓白菜 #1
    把他们设置为统一的ID,然后都给这个ID绑定相同点击事件,这样每次点击难道不行吗?
    2017-04-19 07:52:49
  • 小于飞飞 回复 提问者 晓白菜 #2
    id 命名最好是唯一的,以便 js 操作,class 可以重复使用,换个思路思考,点击某个菜单项后,要显示相应的图片,所以我们要记录的是点击的那个菜单项,所以 id 用来存放菜单项序号,更方便,只要把记录的这个序号,传给 changeImg(); 函数,就可以显示相应的图片了呦。
    2017-04-20 10:33:46
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
HTML5与CSS3实现动态网页 2018
  • 参与学习       1887    人
  • 提交作业       4643    份
  • 解答问题       5760    个

有HTML和CSS基础,却不知道如何进阶?本路径带你通过系统学习,完成从“会做网页”到“做出好的动态网页”的蜕变,迈出成为前端工程师的第一步。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师