做出来了,就是将列表内容写到文本框有a标签样式,不知道怎么去除求教。

来源:5-1 编程挑战

qq_慕圣626863

2019-07-09 20:00

<!doctype html>

<html>

<head>

    <meta charset="UTF-8">

    <title>下拉菜单</title>

<style type="text/css">

body,ul,li{ margin:0; padding:0; font-size:13px;}

ul,li{list-style:none;}

#divselect{width:186px; margin:80px auto; position:relative; z-index:10000;}

#divselect cite{width:150px; height:24px;line-height:24px; display:block; color:#807a62; cursor:pointer;font-style:normal;

padding-left:4px; padding-right:30px; border:1px solid #333333; 

background-color:url(xjt.png) no-repeat right center;}

#divselect ul{width:184px;border:1px solid #333333; background-color:#ffffff; position:absolute; z-index:20000; margin-top:-1px; display:none;}

#divselect ul li{height:24px; line-height:24px;}

#divselect ul li a{display:block; height:24px; color:#333333; text-decoration:none; padding-left:10px; padding-right:10px;}

</style>

   <script type="text/javascript">

window.onload=function(){

var box=document.getElementById('divselect'),

    title=box.getElementsByTagName('cite')[0],

    menu=box.getElementsByTagName('ul')[0],

    lis = box.getElementsByTagName('li');

    as=box.getElementsByTagName('a'),

        index=-1;

   

    // 点击三角时

    title.onclick=function(event){

      // 执行脚本

      event = event || window.event;

      menu.style.display = 'block';

      document.onkeyup = function(event){

       //如果按↓

       if(event.keyCode == 40){

       if(index<lis.length-1){

       index++;

       lis[index].style.backgroundColor = '#369';

       if(index>=1){

       lis[index-1].style.backgroundColor = '#fff';

       }

       }else{

       index = -1;

       lis[lis.length-1].style.backgroundColor = '#fff';

       lis[index+1].style.backgroundColor = '#369';

       index++;

       }

       }

       //如果按↑

       else if(event.keyCode == 38){

       if(index<=0){

       index=lis.length-1;

       lis[index].style.backgroundColor = '#369';

       lis[0].style.backgroundColor = '#fff';

       }else if(index>0){

       lis[index-1].style.backgroundColor = '#369';

       lis[index].style.backgroundColor = '#fff';

       index--;

       }

       }

       //如果按回车键

       else if(event.keyCode == 13){

       if(index>=0){

       title.innerHTML = lis[index].innerHTML;

       lis[index].style.backgroundColor ='#fff';

       index = -1;

       menu.style.display = 'none';

       }

       }

      }

      if(event.stopPropagation){

       event.stopPropagation();

      }else {

       event.cancelBubble();

      }

    }  

    

   // 滑过滑过、离开、点击每个选项时

   for(var i=0;i<lis.length;i++){

    lis[i].onmouseover =function(event){

    this.style.backgroundColor = '#369';

    }

    lis[i].onmouseout =function(event){

    this.style.backgroundColor = '#fff';

    }

    lis[i].onclick = function(event){

    title.innerHTML = this.innerHTML;

    menu.style.display = 'none';

    }

   }


   // 点击页面空白处时

   document.onclick =function(){

       // 执行脚本

       menu.style.display = 'none';

   }


 }

   </script>

</head>

<body>

<div id="divselect">

      <cite>请选择分类</cite>

      <ul>

         <li id="li"><a href="javascript:;" selectid="1">ASP开发</a></li>

         <li><a href="javascript:;" selectid="2">.NET开发</a></li>

         <li><a href="javascript:;" selectid="3">PHP开发</a></li>

         <li><a href="javascript:;" selectid="4">Javascript开发</a></li>

         <li><a href="javascript:;" selectid="5">Java特效</a></li>

      </ul>

    </div>

</body>

</html>


写回答 关注

1回答

  • 颴嵇
    2019-10-23 15:13:33

    你显示的 是<li> 标签的 HTML内容,可不是有HTML内容.

    可以用正则去掉HTML标签,

     function replaceHTML(html) {
           return html.replace(/<(?:[^"'>]*|"[^']*"|'[^"]*')*>/g, '');
     }

    像这样:  title.innerHTML = this.innerHTML;  

    title.innerHTML = replaceHTML(this.innerHTML)


DOM事件探秘

DOM事件?本课程会通过实例来给小伙伴们讲解如何使用这些事件

99545 学习 · 1197 问题

查看课程

相似问题