webAPI10

1.事件的阶段
 <style>
        #dv1{
            width: 300px;
            height: 300px;
            background-color: pink;
        }
        #dv2{
            width: 150px;
            height: 150px;
            background-color: cyan;
        }
        #dv3{
            width: 70px;
            height: 70px;
            background-color: green;
        }

    </style>
</head>
<body>
<div id="dv1">
    <div id="dv2">
        <div id="dv3"></div>
    </div>
</div>
<script src="common.js"></script>
<script>
    /*
    * 三个事件阶段:
    * 1 事件捕获阶段  : 从外向内触发
    * 2.事件目标阶段:  最开始选择的那个
    * 3.事件冒泡阶段:  从里向外触发
    * */
    //同时给三个div注册点击事件
    var arr = [my$("dv3"), my$("dv2"), my$("dv1")];
    arr.forEach(function (ele, i) {
        //给每一个绑定点击事件
        ele.addEventListener("click", function (e) {
            console.log(e)
            //e.eventPhase  判断是什么事件阶段
            console.log(this.id+"===="+e.eventPhase)
        }, true)
        //  为false 是冒泡事件,  为true是捕获事件
    })

</script>


2.为同一个元素绑定不同的事件
 <style>
        #dv{
            width: 300px;
            height: 300px;
            border: 1px solid;
        }
    </style>
</head>
<body>
<div id="dv">
</div>
<script src="common.js"></script>
<script>
    // 给同一个元素绑定不同的事件
    function f1(e) {
        switch(e.type){
            case "click":
                alert("好帅啊");
                break;
            case "mouseover":
                this.style.backgroundColor = "pink";
                break;
            case  "mouseout":
                this.style.backgroundColor = "cyan";
                break;
        }
    }

    my$("dv").onclick = f1;
    my$("dv").onmouseover = f1;
    my$("dv").onmouseout = f1;

</script>

3.模拟淘宝搜索框
  <style>
        .box{
            width: 400px;
            height: 100px;
            margin: 100px auto;
            position: relative;
        }
    </style>
</head>
<body>
<div class="box" id="box">
    <input type="text" id="txt">
    <input type="button" id="btn" value="搜索">
</div>

<script src="common.js"></script>
<script>

    //模拟后台的数据
    var keyWords = ["一马当先", "一箭双雕","一丝不苟","一心二用","吃鸡","吃鸡蛋","吃火锅","吃鸡腿"]
    //给文本框注册键盘松开事件
    my$("txt").onkeyup = function () {
        // 优化: 每一个键盘抬起都要判断这个div中有没有这个div
        if( my$("newBox")){
            //有这个div会删除
            my$("box").removeChild(my$("newBox"))
        }

        //console.log(this.value)
        //获取文本框输入的内容
        var text = this.value;
        //创建空数组---> 存放对应的数据
        var newArr = [];
        //遍历的对比数组中的数据
        for(var i = 0 ; i < keyWords.length; i++){
            //  indexOf(字符)  返回值是当前字符所有的位置
            if(keyWords[i].indexOf(text) == 0){
                //添加到新数组的末尾
                newArr.push(keyWords[i])
            }

        }
        //console.log(newArr)
        // //优化: 判断文本框是空的,不需要创建div  数组为空也不需要创建
        if(this.value.length == 0 || newArr.length == 0){
            //判断页面上有这个div, 则删除
            if(my$("newBox")){
                my$("box").removeChild(my$("newBox"))
            }
            return;
        }
        //创建div,
        var newBox = document.createElement("div")
        //添加
        my$("box").appendChild(newBox);
        newBox.id = "newBox";
        newBox.style.border = "1px solid green";
        //循环的添加到新的盒子里
        for(var j = 0 ; j < newArr.length; j++){
            //创建p标签
           var pp =  document.createElement("p")
            newBox.appendChild(pp);
           pp.innerHTML = newArr[j];
           pp.style.cursor = "pointer";
           //鼠标进入
           pp.onmouseover = function () {
               this.style.backgroundColor = "yellow";
               //点击将选中的内容复制给文本框
               this.onclick = function(){
                   console.log(this.innerText)
                    my$("txt").value = this.innerText;
                   my$("box").removeChild(my$("newBox"))

               }
           }
           //鼠标移出
            pp.onmouseout = function () {
                this.style.backgroundColor = "";
            }

        }

    }


</script>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值