zoukankan      html  css  js  c++  java
  • 根据数据生成列表

    <!DOCTYPE html>
    <html>

    <head>
    <meta charset="UTF-8">
    <title>city修改版</title>
    <style>
    #city {
    display: none;
    }

    #city li {
    overflow: hidden;
    list-style: none;
    200px;
    height: 20px;
    line-height: 20px;
    }

    #city li span {
    float: right;
    }

    .bgColor {
    background-color: orange;
    }
    </style>
    <script src="../common.js"></script>
    <script>
    /*
    * [{"name": "北京","id": 110100,"hot": true},{"name": "上海","id": 310000,"hot": true},{"name": "南京市","id": 320100},{"name": "广州","id": 440100,"hot": true},{"name": "深圳","id": 440300,"hot": true},{"name": "成都","id": 510100},{"name": "杭州","id": 330100},{"name": "南宁","id": 450100},{"name": "大连","id": 210200}];
    * 根据数据生成城市列表,热门城市显示高亮效果
    * 输入框聚焦的时候显示城市列表
    * 输入框失去焦点的时候隐藏城市列表
    * 点击城市列表时,把对应的城市名字写入输入框,并提示选择的城市
    * 刷新页面显示上次选择的城市,并保留7天;
    */
    window.onload = function() {
    var str = [{
    "name": "北京",
    "id": 110100,
    "hot": true
    }, {
    "name": "上海",
    "id": 310000,
    "hot": true
    }, {
    "name": "南京市",
    "id": 320100
    }, {
    "name": "广州",
    "id": 440100,
    "hot": true
    }, {
    "name": "深圳",
    "id": 440300,
    "hot": true
    }, {
    "name": "成都",
    "id": 510100
    }, {
    "name": "杭州",
    "id": 330100
    }, {
    "name": "南宁",
    "id": 450100
    }, {
    "name": "大连",
    "id": 210200
    }];
    //获取页面元素
    var city = getId('city');
    var input = getId('input');
    var output = input.nextElementSibling;
    //根据数据生成城市列表,热门城市显示高亮效果
    var len = str.length;
    //遍历str,每个元素是一个对象,包含属性'name' 'id';还有部分元素存在属性'hot'
    for (var i = 0; i < len; i++) {
    //创建li,span,i三种节点
    var li = crtDom('li');
    var Id = crtDom('i');
    var span = crtDom('span');
    //添加innerHTML
    Id.innerHTML = str[i].name;
    span.innerHTML = str[i].id;
    //判断'hot'
    if (str[i].hot) {
    li.setAttribute('data-hot', str[i].hot);
    li.className = 'bgColor';
    }
    //把创建的节点加到city列表里面;
    li.appendChild(Id);
    li.appendChild(span);
    city.appendChild(li);
    }
    //输入框聚焦的时候显示城市列表
    //即输入框点击事件
    function block() {
    city.style.display = 'block';
    }
    //使用监听事件格式
    input.addEventListener('click', block);
    //输入框失去焦点的时候隐藏城市列表
    //onblur事件,由于需要点击城市列表,用延时器使列表存在页面时可以使用点击事件
    function none() {
    setTimeout(function() {
    city.style.display = '';
    }, 500);
    }
    //使用监听事件格式
    input.addEventListener('blur', none);
    //点击城市列表时,把对应的城市名字写入输入框,并提示选择的城市
    //为了减少绑定事件,利用冒泡机制
    function btnCity(e) {
    //兼容尽量不要少,利于维护
    e = e || window.event;
    var target = e.target || e.srcElement;
    //获取当前事件源所在的li的i包裹的内容
    //遍历city列表的子元素
    var len = city.children.length;
    for (var i = 0; i < len; i++) {
    //判断事件源是否是当前的li 或者 i;
    if (target === city.children[i].firstChild || target === city.children[i]) {
    //获取每个li的i包裹的内容
    var _text = city.children[i].firstChild.innerHTML;
    //未调测之前可以在关键地方先留下控制台打印的代码
    console.log(_text);
    //把获取的内容写入输入框,
    input.value = _text;
    //并提示选择的城市;
    output.innerHTML = '你选择了:' + _text;
    //刷新页面显示上次选择的城市,并保留7天;
    //这里需要保存内容
    setCookie('input', input.value, sevenDay());
    setCookie('output', output.innerHTML, sevenDay());
    }

    }
    }
    //使用监听事件格式
    city.addEventListener('click', btnCity);

    //刷新页面显示上次选择的城市,并保留7天;
    //7天的有效时间
    function sevenDay() {
    var now = new Date();
    now.setDate(now.getDate() + 7);
    return now;
    }
    //刷新页面获取cookie:
    //判断当前cookie是否为空
    if(getCookie('input') != '' && getCookie('output') != ''){
    input.value = getCookie('input');
    output.innerHTML = getCookie('output');
    }

    }
    </script>
    </head>

    <body>
    <p>
    <input type="text" id="input" /><span></span>
    </p>
    <ul id="city"></ul>
    </body>

    </html>

  • 相关阅读:
    彻底理解多态
    变量可以存储在堆中,栈中,方法区中。哪里都可以啊。对象只能存储在堆中
    json序列化后的是字符串,不是二进制。是字符串!!!确定不是二进制!!!
    线程流程理解
    增加一个类的功能可以采用继承或者代理模式或者装饰者模式
    Java 代理模式和装饰者模式的区别
    异常不管咋样,只要抛出了,不管是方法级别抛出,还是类级别抛出。终究有一个地方要对异常进行处理
    汉高澳大利亚sinox为什么不能下载源代码,因为sinox执行unix/linux/windows规划
    使用Visual Studio将Objective-C编译C++
    百度编辑器ueditor简单易用
  • 原文地址:https://www.cnblogs.com/R-jia-bao/p/6195232.html
Copyright © 2011-2022 走看看