根据数据生成列表

<!DOCTYPE html>
<html>

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

#city li {
overflow: hidden;
list-style: none;
width: 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>

时间: 2024-12-09 23:44:02

根据数据生成列表的相关文章

python自动处理数据生成报表

使用模块xlsxwriter import xlsxwriter workbook = xlsxwriter.Workbook('chart.xlsx')     #创建一个Excel文件 worksheet = workbook.add_worksheet()             #创建一个工作表对象 chart = workbook.add_chart({'type': 'column'})    #创建一个图表对象 #定义数据表头列表 title = [u'业务名称',u'星期一',u

Java读取数据库数据生成柱状图

此案例是用swing显示数据的.需要引入jfreechart相关包,不同版本可能包不相同,本人用的是 此案例在ssi框架下会报错,不用框架就没问题. Java后台逻辑代码: public class BarChart { ChartPanel frame1; public BarChart() { CategoryDataset dataset = getDataSet(); JFreeChart chart = ChartFactory.createBarChart3D("水果",

Android配置文件分享和JSON数据生成与解析

首先声明,我这里大体是讲的一个关于"Android配置文件分享和JSON数据生成与解析"的整体流程,具体数据库中的数据根据读者自己的项目来安排,如果您看不大懂也请您原谅,毕竟我说了,我只是新手.其实关于数据库中的数据你只需要知道他们都是一个个对象,然后有各自的属性就行了,我们的关键在于JSON数据的生成与解析. 鉴于自己的是个博客新手,感觉自己的博客访问量有些少可能是因为自己确实知识匮乏,毕竟我早就说了,我不适合编程,但是没办法啊,我要去读个文学博士的话,怕是要遭人白眼了,故而以后的事

python基础IV(切片、迭代、生成列表)

对list进行切片 取一个list的部分元素是非常常见的操作.比如,一个list如下: >>> L = ['Adam', 'Lisa', 'Bart', 'Paul'] 取前3个元素,应该怎么做? 笨办法: >>> [L[0], L[1], L[2]] ['Adam', 'Lisa', 'Bart'] 之所以是笨办法是因为扩展一下,取前N个元素就没辙了. 取前N个元素,也就是索引为0-(N-1)的元素,可以用循环: >>> r = [] >>

由excel经纬度数据生成等值线过程

1.准备数据 2.转换成要素类,名称为xy1 3.定义投影 至此,将excel点数据导入的工作已经完成. 接下来,生成等值线: 1.克里金插值(Kriging) 2.生成等值线 由excel经纬度数据生成等值线过程,布布扣,bubuko.com

将表数据生成Insert脚本

-- ============================================= -- Author: 明永成 -- Create date: 2016-01-03 -- Description: 将表数据生成Insert脚本 -- Demo : exec pCreateInsertScript. 'BexmCodeType','dictypeid = 61' -- ============================================= create proc

LoadRunner之Paramater在负载测试中的数据生成规则

LoadRunner之Paramater在负载测试中的数据生成规则 前段时间在做性能测试的时候,基于业务的需求,使用到了Unique Number的参数类型. 脚本的业务是注册以alien开头,后面接数字的用户帐号,填写相关帐号信息.提交企业信息进行审核. 其中用户帐号是alien开头拼接一个唯一数字的参数,如图: 下面对Unique Number进行相关解释,先引用官方资料:(相信大家也理解这段话的意思) Unique Number: Assigns a range of numbers to

传感器仿真平台——数据生成模块(三)

数据生成模块有下面这样一种情况: 对于不同的传感器仿真实验,所使用的数据类型,数据数量不一样. 如实验一是进行最大覆盖率实验,则他需要的数据格式可能是如下所示: 1 Class Sensor 2 { 3 public int x; 4 public int y; 5 public double direction; //方向 6 public double sweep;//扇形大小 7 } 实验二进行的是信号强度实验,则他可能还需要一个用来作为覆盖物的目标,如下: 1 Class Target

SQL Server 利用批量(batchsize)提交加快数据生成/导入

在最小化日志操作解析,应用的文章中有朋友反映生成测试数据较慢.在此跟大家分享一个简单的应用,在生成数据过程中采用批量提交的方式以加快数据导入. 此应用不光生成测试数据上,在BCP导入数据中,复制初始化快照过程中等都可以根据系统环境调整 batchSize 的大小来提高导入/初始化速度. 应用思想:这里简单介绍下组提交概念,由于关系型数据库依靠日志来保证数据完整性,即先写日志,每当一个事务完成时就需要commit日志刷入磁盘,在高并发短小事务的前提下由于日志频繁落盘导致整体写吞吐下降.用Group