導航:首頁 > 文件教程 > 最新的cityjs文件

最新的cityjs文件

發布時間:2023-06-27 18:06:53

js文件緩存之版本管理詳解

近幾個月來的工作是一個交易系統持續改進項目 迭代發布周期大約為 ~ 周 最近一次迭代是V 版 在禮拜三完成發布 不幸的是 第二天上午就被老大逮過去 原來老大從生產中揪出了一個bug 大致的問題如下

系統中有一個常用的自定義控制項 目的是協助選擇客戶 而V 版的持續改進需求是給控納亮件增加兩個篩選選項 支持不同的默認值配置 很簡單的一個需 求 代碼修改也簡單 其中一個修改是給一個js文件里邊的一個函數增加了一個傳入參數 用來傳遞配置值 經過RC R測試 一切都顯得很正常 不過上 了生產才被發現bug了 載入出來的客戶明顯不正常 數目不對 也與預期的查詢配置不相符

判茄森檢查控制項內部跳轉鏈接 發現問題 傳遞的參數明顯與預期不符 而這個鏈接則是由上面修改過的JS函數生成 因此判定問題是由於客戶端緩存了原版JS 文件 新函數的調用由舊函數所替換引發的 經過清除緩存 重新載入頁面後 這個自定義控制項能夠正常工作 很不幸的是 我們是不能通過打電話告訴每一位用 戶 你需要清除緩存 然後才能正常使用這個功能

掘畝到此時 我才意識到需要一種方法來控制項JS的緩存問題 否則 後續任何涉及JS文件內容的修改 都會因為緩存無法獲取最新JS文件 而導致生產事故

原則上 我們是需要在有JS更新的時候 才會去重新載入JS文件 而不是每次都重新載入 因此第一種做法給JS應用地址後添加隨機參數是不可取的 因為它意味著 幾乎每次載入頁面都會是重新載入JS 而不會合理的利用緩存JS 但是 我們還有第二種更合理的做法 如果關注過一些國外網站代碼 會發現 他們通常是在js鏈接後添加一個版本號參數 而不是隨機數 當js代碼發生修改時 只需要將版本號加 就可以很巧妙的解決通知客戶端更新js文件 不知道 誰是第一個想到這種方法的人 不過毫無疑問 他是值得我們欽佩的 真是一個不錯的idea的!

lishixin/Article/program/java/JSP/201311/20638

② 29_用js實現一個省市級聯效果

(1)var provs={},存儲省市的json結構數據。

(2)function loadProv() {},此函數實現了初始化頁面載入數據的功能。

(3)var prov = document.getElementById("prov"),獲取存放省份的select下拉菜單。

(4)for (var key in provs),遍歷json結構數據。

(5)var provName = key,獲取省份的名稱。

(6)var optProv = document.createElement("option"),創建一個option元素對象。

(7)optProv.value = provName,設置option元素的value屬性值。

(8)optProv.innerText = provName,設置option顯示的文本內容。

(9)prov.appendChild(optProv),將option元素添加到select下拉菜單。

(10)function provChange() {},作為onchange事件處理函數。

(11)var prov = document.getElementById("prov"),獲取省份下拉菜單。

(12)var city = document.getElementById("city"),獲取城市下拉菜單。

(13)var provName = prov.value,獲取當前選中的省份的value值。

(14)if (provName == "none") {

city.style.display = "none";

return;

},如果值等於none,說明選中的是第一項,那麼城市下拉菜單還是具有隱藏狀態,並跳出函數。

(15)else {

city.style.display = "";

},否則的話顯示出城市下拉菜單,默認狀態它是隱藏的。

(16)var citys = provs[provName],獲取城市,citys是個數組。

(17)for (var index = city.childNodes.length - 1; index >= 0; index--) {

var child = city.childNodes[index];

city.removeChild(child);

},遍歷城市下拉菜單下的option元素,然後刪除這些元素。

之所以清空就是為了防止當再次載入的時候出現累加情況。

(18)for (var index = 0; index < citys.length; index++) {},遍歷數組中的元素,也就是城市。

(19)var optCity = document.createElement("option"),創建option元素。

(20)optCity.value = citys[index],設置option元素的value值。

(21)optCity.innerText = citys[index],設置option元素的文本內容。

(22)city.appendChild(optCity),將option元素添加select下拉菜單。

數據表形式數據

json形式數據

③ javascript實現點擊省份出現城市功能

使用jq吧,很多操作可以簡化,先引入jq文件
省份option的value寫為省份的標示,就是省份和城市關聯的欄位
<script>

$(function(){
$('#dorp1').change(function(){
var province = $(this).val();
$.get("/控制器名/請求的方法名", {'id':province}, function(ret){
// ret是請求方法的返回值,在這里就是通過省份查到的城市數組
var city = '';

$.each(ret, function(i, o){
city += "<option value=" + o.城市id + ">" + o.城市名 + "<option>";

})

$("#dorp2").empty().append(city);

})

});

})
</script>

④ 怎麼用js做一個地區選擇控制項的特效啊

1.
首先寫一個js文件,areaLocation.js:
var
provinceArray=
new
Array();
provinceArray=[
{"pname":"江蘇",
"country":[
{
"cname":"南京市",
"town":["玄武區","白下區","秦淮區","建鄴區","雨花台","江寧區",
"六合區","溧水縣","高淳縣"]},
{
"cname":"南通市",
"town":["崇川區","港閘區","啟東市","如皋市","通州市","海門市","海安縣","如東縣"]
},
{
"cname":"蘇州市",
"town":["金閶區","滄浪區","平江區","虎丘區","吳中區","張家港","崑山市","吳江市","太倉市"]
}
]
},
{"pname":"上海",
"country":[
{
"cname":"上海市",
"town":["徐匯區","普陀區","楊浦區","虹口區","盧灣區","浦東區","黃浦區","長寧區","閘北區","靜安區","閔行區","松江區"]
}
]
}
];
function
areaInitialize(){
province.length=1;
for(var
i
=
0;i<provinceArray.length;i++){
var
pro
=
provinceArray[i].pname;
province.options[province.length]
=
new
Option(pro,pro);
}
}
function
changeCLocation(id,city){
//alert(id);
city.length
=
0;
if(id>0){
var
j=id-1;
var
i;
var
countrys
=
new
Array();
countrys
=
provinceArray[j].country;
city.options[0]
=
new
Option('不限','');
for
(i=0;i
<
countrys.length;
i++){
var
cname
=
countrys[i].cname
city.options[city.length]
=
new
Option(cname,
cname);
}
changeTLocation(id,1,town);
}else
if(id==0){
city.length
=
0;
town.length
=
0;
city.options[city.length]
=
new
Option('不限','');
town.options[town.length]
=
new
Option('不限','');
}
}
function
changeTLocation(pid,cid,town){
//alert(cid);
var
countrys
=
new
Array();
var
towns
=
new
Array();
town.length
=
0;
var
i;
countrys
=
provinceArray[pid-1].country;
areaId
=
countrys[cid-1].areaId;
towns
=
countrys[cid-1].town
city.options[0]
=
new
Option('不限','');
town.options[0]
=
new
Option('不限','');
for
(i=0;i
<
towns.length;
i++){
var
tname
=
towns[i]
town.options[town.length]
=
new
Option(tname,tname);
}
town.options[0]
=
new
Option('不限','');
}
2.
再寫一個html頁面:
<!DOCTYPE
HTML
PUBLIC
"-//W3C//DTD
HTML
4.01
Transitional//EN">
<html>
<head>
<script
type="text/javascript"
></script>
<script
type="text/javascript">
window.onload=areaInitialize();
</script>
</head>
<body>
<select
size="1">
<option
value=0
selected>--請選擇--</option>
</select>
<select
size="1"
>
<option
value=0
selected>--請選擇--</option>
</select>
<select
size=1>
<option
value=0
selected>--請選擇--</option>
</select>
</body>
</html>

⑤ 怎樣用js實現省市聯動,數據是從資料庫讀取 謝謝了

省市聯動,要去讀資料庫就慢了點,而且用的資源也多
由於省市數據是固定的,通常,我專會獨立定義一個js文件屬,裡面是一個json數據,分級存儲省市數據,每個地區都有一個六位的代碼,就是你身份證的前六位,那是精確到縣級的~
當然,如果你只需要到地級市,那就弄兩級的就行啦

js讀取js,是很快的~

閱讀全文

與最新的cityjs文件相關的資料

熱點內容
日本蘋果66g多少錢 瀏覽:93
個性的文件夾名稱 瀏覽:697
怎麼設置文件打開密碼 瀏覽:811
手機版qq客服代碼怎麼用 瀏覽:24
fme可以打開哪些文件 瀏覽:339
好看的qq密碼 瀏覽:293
安卓唯一標識有哪些 瀏覽:243
win10ime 瀏覽:271
手機號大數據保護停機是什麼意思 瀏覽:81
兩個蘋果手機怎麼隔空投送app 瀏覽:903
ps修改有褶皺的文件 瀏覽:417
javadbfreader 瀏覽:307
蘋果手機數字代碼是什麼 瀏覽:66
驅動程序順序安裝腳本 瀏覽:665
word文件里怎樣查重 瀏覽:219
mx5系統基帶版本 瀏覽:184
ntlea全域通win10 瀏覽:171
qq怎麼查看別人的收藏 瀏覽:135
地震三參數matlab程序 瀏覽:57
怎樣給優盤文件加密軟體 瀏覽:7

友情鏈接