javascript實(shí)現(xiàn)dom動(dòng)態(tài)創(chuàng)建省市縱向列表菜單的方法
本文實(shí)例講述了javascript實(shí)現(xiàn)dom動(dòng)態(tài)創(chuàng)建省市縱向列表菜單的方法。分享給大家供大家參考。具體實(shí)現(xiàn)方法如下:
<!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>動(dòng)態(tài)創(chuàng)建縱向列表</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;} /*設(shè)置城市內(nèi)容居中*/
</style>
<script type="text/javascript">
var provs = { "江西省": ["南昌市", "景德鎮(zhèn)", "九江", "鷹潭", "萍鄉(xiāng)", "新馀", "贛州", "吉安", "宜春", "撫州", "上饒"],
"福建省": ["福州", "廈門", "莆田", "三明", "泉州", "漳州", "南平", "龍巖", "寧德"],
"河北省": ["石家莊", "邯鄲", "邢臺(tái)", "保定", "張家口", "承德", "廊坊", "唐山", "秦皇島", "滄州", "衡水"],
"四川省": ["成都市", "自貢市", "攀枝花市", "瀘州市", "德陽(yáng)市", "綿陽(yáng)市", "廣元市", "遂寧市", "內(nèi)江市", "樂(lè)山市", "南充市", "眉山市", "宜賓市", "廣安市", "達(dá)州市", "雅安市", "巴中市", "資陽(yáng)市", "阿壩藏族羌族自治州", "甘孜藏族自治州", "涼山彝族自治州"],
"山西省": ["太原市", "大同市", "陽(yáng)泉市", "長(zhǎng)治市", "晉城市", "朔州市", "晉中市", "運(yùn)城市", "忻州市", "臨汾市", "呂梁市"],
"內(nèi)蒙古": ["呼和浩特市", "包頭市", "烏海市", "赤峰市", "通遼市", "鄂爾多斯市", "呼倫貝爾市", "巴彥淖爾市", "烏蘭察布市", "興安盟", "錫林郭勒盟", "阿拉善盟"],
"海南省": ["??谑?, "三亞市"], "重慶市": ["重慶"],
"貴州省": ["貴陽(yáng)市", "六盤水市", "遵義市", "安順市", "銅仁地區(qū)", "黔西南布依族苗族自治州", "畢節(jié)地區(qū)", "黔東南苗族侗族自治州", "黔南布依族苗族自治州"],
"甘肅省": ["蘭州市", "嘉峪關(guān)市", "金昌市", "白銀市", "天水市", "武威市", "張掖市", "平?jīng)鍪?, "酒泉市", "慶陽(yáng)市", "定西市", "隴南市", "臨夏回族自治州", "甘南藏族自治州"],
"青海省": ["西寧市", "海東地區(qū)", "海北藏族自治州", "黃南藏族自治州", "海南藏族自治州", "果洛藏族自治州", "玉樹(shù)藏族自治州", "海西蒙古族藏族自治州"],
"寧夏自治區(qū)": ["銀川市", "石嘴山市", "吳忠市", "固原市", "中衛(wèi)市"]
};
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 () { //鼠標(biāo)經(jīng)過(guò)時(shí)顯示層
this.className = "current";
}
node.onmouseout = function () { //鼠標(biāo)離開(kāi)時(shí)隱藏層
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; //存放最大城市內(nèi)容的長(zhǎng)度,以便后面設(shè)置cityUL的最大寬度,達(dá)到寬度自適應(yīng)
for (var i = 0; i < citys.length; i++) {
var cityName = citys[i];
if (cityName.length > maxLength) {
maxLength = cityName.length; //提取最大長(zhǎng)度的城市
}
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主要是按一個(gè)字20px來(lái)算
}
maxLength = maxLength + "px"; //加上像素的px后綴
cityUL.style.width= maxLength; //設(shè)置cityUL的最大寬度
provLi.appendChild(cityUL); //添加城市UL
}
nIndex++;
}
iniEvent(); //初始化事件
}
</script>
</head>
<body onload ="loadData()">
<div id="menu">
<ul id="prov">
</ul>
</div>
</body>
</html>
希望本文所述對(duì)大家的javascript程序設(shè)計(jì)有所幫助。
相關(guān)文章
javascript 中按屬性值查找數(shù)組中的對(duì)象多種方法
JavaScript 數(shù)組可以保存混合類型的不同值,例如字符串、空值或布爾值,并且不需要數(shù)組的大小來(lái)指定它在哪里自動(dòng)增長(zhǎng)和動(dòng)態(tài),這篇文章主要介紹了javascript 中按屬性值查找數(shù)組中的對(duì)象多種方法,需要的朋友可以參考下2023-06-06
js中apply和Math.max()函數(shù)的問(wèn)題及區(qū)別介紹
這篇文章主要介紹了js中apply和Math.max()函數(shù)的問(wèn)題,本文給大家?guī)?lái)兩種答案,每一種答案給大家介紹的非常詳細(xì),在文章底部給大家提到了js中Math.max.apply和Math.max的區(qū)別,感興趣的朋友一起看看吧2018-03-03
javascript forEach通用循環(huán)遍歷方法
循環(huán)遍歷一個(gè)元素是開(kāi)發(fā)中最常見(jiàn)的需求之一,那么讓我們來(lái)看一個(gè)由框架BASE2和Jquery的結(jié)合版本吧.2010-10-10
[分享]一個(gè)非常漂亮的進(jìn)度滾動(dòng)條
[分享]一個(gè)非常漂亮的進(jìn)度滾動(dòng)條...2007-02-02
ES6 javascript中Class類繼承用法實(shí)例詳解
這篇文章主要介紹了ES6 javascript中Class類繼承用法,結(jié)合實(shí)例形式較為詳細(xì)的分析了ES6繼承的基本用法、相關(guān)屬性、方法與使用技巧,需要的朋友可以參考下2017-10-10
讓div運(yùn)動(dòng)起來(lái) js實(shí)現(xiàn)緩動(dòng)效果
讓div運(yùn)動(dòng)起來(lái),這篇文章主要介紹了js實(shí)現(xiàn)緩動(dòng)效果的相關(guān)代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-07-07
JSON+HTML實(shí)現(xiàn)國(guó)家省市聯(lián)動(dòng)選擇效果
實(shí)現(xiàn)國(guó)家省市聯(lián)動(dòng)的方法有很多,本文要為大家介紹的JSON+HTML如何實(shí)現(xiàn),需要的朋友可以參考下2014-05-05

