JS小案例分析

江枫思渺然 提交于 2020-01-18 23:08:46

a、微博输入删除小案例

<!DOCTYPE html><html><head lang="en">    <meta charset="UTF-8">    <title></title>    <style>        * {            margin: 0;            padding: 0;        }        ul {            list-style: none;        }        .box {            width: 600px;            margin: 100px auto;            border: 1px solid #000;            padding: 20px;        }        textarea {            width: 450px;            height: 160px;            outline: none;            resize: none;        }        ul {            width: 450px;            padding-left: 80px;        }        ul li {            line-height: 25px;            border-bottom: 1px dashed #cccccc;        }        input {            float: right;        }    </style></head><body><div class="box" id="weibo">    <span>微博发布</span>    <textarea name="" id="txt" cols="30" rows="10"></textarea>    <button id="btn">发布</button>    <ul id="ul">    </ul></div><script src="common.js"></script><script>    var ul = $$("ul");    var btn = $$("btn");    var txt = $$("txt");    btn.onclick = function () {        if (txt.value.length == 0) {            alert("请输入内容");            return;        }        var li = document.createElement("li");        li.innerHTML = txt.value;        var lis = ul.children;        if (lis.length == 0) {            ul.appendChild(li);        } else {            ul.insertBefore(li, lis[0]);        }        var input = document.createElement("input");        input.type = "button";        input.value = "删除";        li.appendChild(input);        input.onclick = function () {            this.parentNode.parentNode.removeChild(this.parentNode);        }    }
</script>
解题思路:

1. 先获得要操作的对象,文本域,发布按钮,ul
2. 给发布按钮注册单击事件
3. 点击发布按钮的时候,判断用户输入的内容是否为空,也就是判断文本域内容是否为空,为空则return,不再往下执行。
4. 动态的创建元素li,然后追加到ul中
5. 将用户输入的内容做为li的文本
6. 动态的创建删除按钮(input),并添加对应的属性(type=button,value='删除')并追加到li中
7. 判断ul中是否有子元素,如果有则将创建的新的li往前插入(insertBefore),如果是第一个li则是给ul追加(appendChild)
8. 给创建的input(删除按钮)注册单击事件,当点击删除按钮的时候,从ul中删除对应的li

b、模拟百度输入框小案例:

<!DOCTYPE html><html><head lang="en">    <meta charset="UTF-8">    <title></title>    <style>        * {            margin: 0;            padding: 0;        }        #box {            width: 400px;            margin: 200px auto;            /*border: 1px solid #000;*/        }        #txtSearch {            width: 300px;        }        #pop {            width: 300px;            border: 1px solid red;            padding: 0px;        }        #pop ul {            list-style-type: none;            margin: 5px;            padding: 0px;        }        #pop ul li {        }    </style></head><body><div id="box">    <input type="text" value="" id="txtSearch"/>    <input type="button" value="搜索" id="btnSearch"/></div><script src="common.js"></script><script>    var array = ["a", "abc", "aaa", "aabbcc", "aaaaaaa", "abedoefjldkf", "bbddcc", "aa", "aaeeccss"];    var txt = document.getElementById("txtSearch");    var btn = document.getElementById("btnSearch");    var box = document.getElementById("box");//    txt.onkeyup = function () {//        var v = txt.value;//        var filterArr = [];//        for (var i = 0; i < array.length; i++) {//            if (array[i].indexOf(v) == 0) {//                filterArr.push(array[i]);//            }//        }//        var divPop = document.getElementById("pop");//        if (divPop) {//            box.removeChild(divPop);//        }//        if (filterArr.length == 0) {//            return;//        }//        if (v.length == 0) {//用户输入数据为空的时候,不再往下执行代码。//            return;//        }//        var divPop = document.createElement("div");//        divPop.id = "pop";//        box.appendChild(divPop);//        var ul = document.createElement("ul");//        divPop.appendChild(ul);//        for (var j = 0; j < filterArr.length; j++) {//            var li = document.createElement("li");//            ul.appendChild(li);//            li.innerHTML = filterArr[j];//        }////    }txt.onkeyup= function () {    var v=txt.value;    var arr=[];    for(var i=0;i<array.length;i++){        if(array[i].indexOf(v)==0){            arr.push(array[i]);        }    }    var divPop=document.getElementById("pop");    if(divPop){        box.removeChild(divPop);//删除创建div的样式    }    if(arr.length==0){        return;    }    if(v.length==0){//如果用户不输入内容,不再执行下面代码;        return;    }    var divPop=document.createElement("div");    divPop.id="pop";    box.appendChild(divPop);    var ul=document.createElement("ul");    divPop.appendChild(ul);    for(var j=0;j<arr.length;j++){        var li=document.createElement("li");        ul.appendChild(li);        li.innerHTML=arr[j];    }}</script>解题思路:

1. 当键盘按下并抬起的时候触发事件
2. 根据用户输入的内容去数组当中查找以用户输入的内容开头的数据
3. 将遍历到的以用户输入的内容为开头的数据放到一个新的数组当中
4. 动态创建元素div,ul等,然后追加,并设置样式
5. 循环遍历新数组,根据新数组中的元素个数,创建li,并追加到ul中
6. 根据新输入的数据在生成Div之前,看是否能够通过ID获得div,如果有的话,则在创建新元素之前删除之前的div
7. 如果数组元素为空的话,加return关键字,不再往下执行代码
8. 如果文本框的输入为空的话,加return关键字,也不再往下执行代码

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!