select的onchange事件

最近收到一份需求,需求中有一个小功能点类似有好多种水果,选择其中一个水果就在其下方位置显示这个水果的说明。

需求要求所有水果都是单选,但这个页面主要是在手机上显示的,那水果一多岂不是滑到底都要滑半天?于是我寻思着把单选水果改成下拉选项,这样水果再多也就占页面一点点位置。

说干就干,先写个html:

<div id="option">
      <label for="fruit">水果:</label>
      <select name="fruit" id="fruit">
        <option selected="selected">请选择</option>
        <option value="苹果">苹果</option>
        <option value="橘子">橘子</option>
        <option value="梨子">梨子</option>
        <option value="西瓜">西瓜</option>
        <option value="哈密瓜">哈密瓜</option>
      </select>
</div>
<ul id="detail">
      <li>一天一苹果,医生远离我</li>
      <li>橘子皮可以煮汤</li>
      <li>冰糖雪梨好好吃</li>
      <li>西瓜是我的最爱</li>
      <li>日本哈密瓜好好吃</li>
</ul>

然后让下面detail的值先隐藏。

#detail li{
  display: none;
}

这个时候页面样子是这样的:


接下来就要开始写js了,js这块我比较弱,我的想法呢就是先拿到前面那个select下面option的index,然后根据index的值显示对应的li。

但是怎么拿到呢?我本来想找找有没有JQuery的方法可以获取到option的index的,但是翻查了半天的资料和别人的解决方案,不是看不懂就是设置了不生效...正在我灰心的时候,我在菜鸟教程上看到了解决方案,原来一句话就可以了:

var x=document.getElementById("mySelect").selectedIndex;

那么怎么在每次下拉的时候都输出对应的index呢,这里我们就要设置一个onchange事件了。当下拉框发现变化的时候,输出对应的index,然后再将index关联到后面的li上面,就可以做到选中一个水果,显示对应的说明啦:

fruit.onchange = function () {
    var ind =document.getElementById("fruit").selectedIndex;
    if(ind == 0){
      $('#detail li').hide();
    }else{
      $('#detail li').eq(ind-1).show().siblings().hide();
    }
  }

最后的效果图就是下面这样:


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 专业考题类型管理运行工作负责人一般作业考题内容选项A选项B选项C选项D选项E选项F正确答案 变电单选GYSZ本规程...
    小白兔去钓鱼阅读 10,285评论 0 13
  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML标准。 注意:讲述HT...
    kismetajun阅读 28,572评论 1 45
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 14,544评论 4 61
  • 电影讲的是有天籁之音的女孩伊西亚,在妈妈和著名音乐人夏克提(阿米尔·汗 饰)的支持下最终梦想成真成“巨星”的故事。...
    周雨聊管理阅读 571评论 0 2
  • 看到星币我就觉得喜庆,有钱~星币皇后,手上拿着一枚星币,坐在丰收的庄园中,还有一只小松鼠陪伴,她的前面是刚冒出来的...
    瀚文ILoveU阅读 279评论 0 0

友情链接更多精彩内容