本文实例讲述了javascript实现dom动态创建省市纵向列表菜单的方法。分享给大家供大家参考。具体实现方法如下:
<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"
\"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">
<html xmlns=\"http://www.w3.org/1999/xhtml\">
<head>
<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />
<title>动态创建纵向列表</title>
<style type=\"text/css\">
a { color: #000; text-decoration: none; }
a:hover { color: #F00; }
#menu { width: 100px; border: 1px solid #CCC; border-bottom:none;}
#menu ul { list-style: none; margin: 0px; padding: 0px; }
#menu ul li { background: #eee; padding: 0px 8px; height: 26px; line-height: 26px; border-bottom: 1px solid #CCC; position:relative; }
#menu ul li ul { display:none; position: absolute; left: 100px; top: 0px; width:100px;border:1px solid #ccc; border-bottom:none; }
#menu ul li.current ul { display:block;}
#menu ul li ul li{text-align:center;} /*设置城市内容居中*/
</style>
<script type=\"text/javascript\">
var provs = { \"江西省\": [\"南昌市\", \"景德镇\", \"九江\", \"鹰潭\", \"萍乡\", \"新馀\", \"赣州\", \"吉安\", \"宜春\", \"抚州\", \"上饶\"],
\"福建省\": [\"福州\", \"厦门\", \"莆田\", \"三明\", \"泉州\", \"漳州\", \"南平\", \"龙岩\", \"宁德\"],
\"河北省\": [\"石家庄\", \"邯郸\", \"邢台\", \"保定\", \"张家口\", \"承德\", \"廊坊\", \"唐山\", \"秦皇岛\", \"沧州\", \"衡水\"],
\"四川省\": [\"成都市\", \"自贡市\", \"攀枝花市\", \"泸州市\", \"德阳市\", \"绵阳市\", \"广元市\", \"遂宁市\", \"内江市\", \"乐山市\", \"南充市\", \"眉山市\", \"宜宾市\", \"广安市\", \"达州市\", \"雅安市\", \"巴中市\", \"资阳市\", \"阿坝藏族羌族自治州\", \"甘孜藏族自治州\", \"凉山彝族自治州\"],
\"山西省\": [\"太原市\", \"大同市\", \"阳泉市\", \"长治市\", \"晋城市\", \"朔州市\", \"晋中市\", \"运城市\", \"忻州市\", \"临汾市\", \"吕梁市\"],
\"内蒙古\": [\"呼和浩特市\", \"包头市\", \"乌海市\", \"赤峰市\", \"通辽市\", \"鄂尔多斯市\", \"呼伦贝尔市\", \"巴彦淖尔市\", \"乌兰察布市\", \"兴安盟\", \"锡林郭勒盟\", \"阿拉善盟\"],
\"海南省\": [\"海口市\", \"三亚市\"], \"重庆市\": [\"重庆\"],
\"贵州省\": [\"贵阳市\", \"六盘水市\", \"遵义市\", \"安顺市\", \"铜仁地区\", \"黔西南布依族苗族自治州\", \"毕节地区\", \"黔东南苗族侗族自治州\", \"黔南布依族苗族自治州\"],
\"甘肃省\": [\"兰州市\", \"嘉峪关市\", \"金昌市\", \"白银市\", \"天水市\", \"武威市\", \"张掖市\", \"平凉市\", \"酒泉市\", \"庆阳市\", \"定西市\", \"陇南市\", \"临夏回族自治州\", \"甘南藏族自治州\"],
\"青海省\": [\"西宁市\", \"海东地区\", \"海北藏族自治州\", \"黄南藏族自治州\", \"海南藏族自治州\", \"果洛藏族自治州\", \"玉树藏族自治州\", \"海西蒙古族藏族自治州\"],
\"宁夏自治区\": [\"银川市\", \"石嘴山市\", \"吴忠市\", \"固原市\", \"中卫市\"]
};
function iniEvent() {
var provUL = document.getElementById(\"prov\");
if (provUL) {
var allli = provUL.getElementsByTagName(\"li\");
for (i = 0; i < allli.length; i++) {
node = allli[i];
node.onmouseover = function () { //鼠标经过时显示层
this.className = \"current\";
}
node.onmouseout = function () { //鼠标离开时隐藏层
this.className = this.className.replace(\"current\", \"\");
}
}
}
}
function loadData() {
var provUL = document.getElementById(\"prov\");
var nIndex = 0;
for (var key in provs) {
var provLi = document.createElement(\"li\");
provLi.id = \"provLI\" + nIndex;
provLi.innerHTML = \"<a href=\'#\'>\" + key + \"</a>\";
provUL.appendChild(provLi); //添加省份li
//================添加城市========================
var citys = provs[key];
if (citys.length > 0) {
var cityUL = document.createElement(\"ul\");
var maxLength = 0; //存放最大城市内容的长度,以便后面设置cityUL的最大宽度,达到宽度自适应
for (var i = 0; i < citys.length; i++) {
var cityName = citys[i];
if (cityName.length > maxLength) {
maxLength = cityName.length; //提取最大长度的城市
}
var cityLI = document.createElement(\"li\");
cityLI.id = \"cityLI\" + i;
cityLI.innerHTML = \"<a href=\'#\'>\" + cityName + \"</a>\";
cityUL.appendChild(cityLI);
}
if (maxLength <= 6) {
maxLength = 100;
}
else {
maxLength = maxLength * 20;
//这里乘以20主要是按一个字20px来算
}
maxLength = maxLength + \"px\"; //加上像素的px后缀
cityUL.style.width= maxLength; //设置cityUL的最大宽度
provLi.appendChild(cityUL); //添加城市UL
}
nIndex++;
}
iniEvent(); //初始化事件
}
</script>
</head>
<body onload =\"loadData()\">
<div id=\"menu\">
<ul id=\"prov\">
</ul>
</div>
</body>
</html>
希望本文所述对大家的javascript程序设计有所帮助。
本文地址:https://www.stayed.cn/item/21970
转载请注明出处。
本站部分内容来源于网络,如侵犯到您的权益,请 联系我