javascript 常用方法 解析URL,补充前导字符
2018-11-7 20:41:20 星期三
1. 解析URL
function parseUrl(url)
{
url = decodeURIComponent(url);
var u = url.split('?'); var args = {};
args['uri'] = u[0]; if (u.length === 2) {
var items = u[1].split("&");
var item = null, name = null, value = null;
for(var i=0; i < items.length; i++){
item = items[i].split("=");
if(item[0]){
name = item[0];
value = item[1] ? item[1] : "";
args[name] = value;
}
}
} return args;
}
2019-4-25 10:44:30 星期四
2. 补充前导字符
//给字符串str补上多个前导字符pad, 最终使str总长为length
function strPad(str, pad, length)
{
var padn = length - str.length;
var pads = ''; for (i =0; i < padn ; i++) {
pads += pad;
} return pads + str;
}
2019-5-13 14:25:53 星期一
3. 构建URL
function buildUrl(prefix, obj)
{
let param = parseUrl(prefix);
delete param.uri; for (let i in obj) {
param[i] = obj[i]; //去掉重复的键, 用obj中的覆盖prefix中的
} let arr = [];
for (let j in param) {
arr.push(j + '=' + param[j]);
} let str = arr.join('&'); if (prefix.indexOf('?') !== -1) {
let u =prefix.split('?');
return u[0] + '?' + str;
} else {
return prefix + '?' + str;
}
}
2019-5-21 19:35:24 星期二
4. 国省市县联动
var countryLength = 3; //国家编号的长度
var provinceLength = 2; //省编号的长度
var cityLength = 2; //城市编号的长度
var areaLength = 2; //县区编号的长度
var _countryList = ''; //国家: {001000000:"中国", ...}
var _provinceList = ''; //省/州: {001010000:"河南省", ...}
var _cityList = ''; //城市: {001010100:"南阳市", ...}
var _areaList = ''; //县区: {001010101:"赊店", ...} var _blankOption = '<option label="" value=""></option>';
var _tplOption = '<option label="{label}" value="{value}">{text}</option>'; $.ajax({
type :"get",
url :'getCountryProvinceCity',
dataType: 'json',
async :false,
success :function(data){
_countryList = data.country_list;
_provinceList = data.province_list;
_cityList = data.city_list;
_areaList = data.area_list;
}
}); clearProvince('country', 'province', 'city', 'area'); //清除掉下拉列表中不关联的省市县 //cpc: country province city
//国家变动事件
function cpcChangeCountry(countryId, provinceId) {
var country = $("#"+countryId).val(); //新选择的国家
var provinceDom = $("#"+provinceId); var provinceHtml = _blankOption;
var tmp='';
for (code in _provinceList) {
var prefix1 = strPad(country, '0', countryLength);
var prefix2 = code.substring(0, countryLength); if (prefix1 === prefix2) {
tmp = _tplOption;
tmp = tmp.replace('{label}', _provinceList[code]);
tmp = tmp.replace('{value}', code);
tmp = tmp.replace('{text}', _provinceList[code]);
provinceHtml += tmp;
}
} provinceDom.html(provinceHtml);
} //省份变动事件
function cpcChangeProvince(provinceId, cityId) {
var province = $("#"+provinceId).val(); //新选择的省份
var cityDom = $("#"+cityId); var len = countryLength+provinceLength;
var provincePrefix = province.substring(0, len); var cityHtml = _blankOption;
var tmp = '';
for (code in _cityList) {
var cityPrefix = code.substring(0, len);
if (provincePrefix === cityPrefix) {
tmp = _tplOption;
tmp = tmp.replace('{label}', _cityList[code]);
tmp = tmp.replace('{value}', code);
tmp = tmp.replace('{text}', _cityList[code]);
cityHtml += tmp;
}
} cityDom.html(cityHtml);
} //城市变动事件
function cpcChangeCity(cityId, areaId) { var city = $("#"+cityId).val(); //选择的城市
var areaDom = $("#"+areaId); var len = countryLength+provinceLength+cityLength;
var cityPrefix = city.substring(0, len); var areaHtml = _blankOption; //默认值
var tmp = '';
for (code in _areaList) {
var areaPrefix = code.substring(0, len);
if (cityPrefix === areaPrefix) {
tmp = _tplOption;
tmp = tmp.replace('{label}', _areaList[code]);
tmp = tmp.replace('{value}', code);
tmp = tmp.replace('{text}', _areaList[code]);
areaHtml += tmp;
}
} areaDom.html(areaHtml);
} //给字符串str补上前导字符pad, 最终使str总长为length
function strPad(str, pad, length)
{
var padn = length - str.length;
var pads = ''; for (i =0; i < padn ; i++) {
pads += pad;
} return pads + str;
} //刚进入编辑页面时, 去掉省份,城市中与当前国家无关的选项
function clearProvince(countryId, provinceId, cityId, areaId) {
var country = $("#"+countryId).val(); //当前选择的国家
var provinceDom = $("#"+provinceId);
var cityDom = $("#"+cityId);
var areaDom = $("#"+areaId);
var province = provinceDom.val();
var city = cityDom.val(); if (country) {
//删除省份中不属于国家的
for (code in _provinceList) {
let prefix1 = strPad(country, '0', countryLength);
let prefix2 = code.substring(0, countryLength); if (code.length> 0 && prefix1 !== prefix2) {
provinceDom.find("option[value='"+code+"']").remove();
}
} //删除城市中不属于省份的
for (code in _cityList) {
let prefix1 = province.substring(0, countryLength+provinceLength);
let prefix2 = code.substring(0, countryLength+provinceLength); if (code.length> 0 && prefix1 !== prefix2) {
cityDom.find("option[value='"+code+"']").remove();
}
} //删除区县中不属于城市的
for (code in _areaList) {
let prefix1 = city.substring(0, countryLength+provinceLength+cityLength);
let prefix2 = code.substring(0, countryLength+provinceLength+cityLength); if (code.length> 0 && prefix1 !== prefix2) {
areaDom.find("option[value='"+code+"']").remove();
}
}
}
}
2019-6-5 9:26:52 星期三
5. 循环生成模板 (依赖jquery, 模板中的变量示例: {var}, 参数1: jquery识别的选择符, 参数2: 对象数组)
function repeat(selector, arr) {
let tplDom = $(selector);
let tpl = tplDom[].outerHTML;
let out = '';
for (let i in arr) {
if (!isNaN(parseInt(i))) {
let map = arr[i];
let tmp = tpl;
for (let j in map) {
let re = new RegExp('{' + j + '}', 'g');
tmp = tmp.replace(re, map[j]);
}
out += tmp;
}
} tplDom.replaceWith(out);
}
6. 选中select标签中的option
id: select标签的id, values: array, option的value属性数值
function markSelected(id, values) {
let arr = document.getElementById(id).getElementsByTagName('option'); for (let i=0; i<arr.length; i++) {
let val = arr[i].getAttribute('value');
if (values.indexOf(val) > -1) {
arr[i].setAttribute('selected', 'selected');
} else {
arr[i].removeAttribute('selected');
}
}
}
javascript 常用方法 解析URL,补充前导字符的更多相关文章
- 前端开发:Javascript中的数组,常用方法解析
前端开发:Javascript中的数组,常用方法解析 前言 Array是Javascript构成的一个重要的部分,它可以用来存储字符串.对象.函数.Number,它是非常强大的.因此深入了解Array ...
- JavaScript数组常用方法解析和深层次js数组扁平化
前言 数组作为在开发中常用的集合,除了for循环遍历以外,还有很多内置对象的方法,包括map,以及数组筛选元素filter等. 注:文章结尾处附深层次数组扁平化方法操作. 作为引用数据类型的一种,在处 ...
- javascript:将URL的参数列表解析为一个对象
<!doctype html> <html> <head> <meta charset="utf-8"> <title> ...
- 异类的Javascript处理和解析URL的方式
通常来说,我们使用Javascript处理和解析URL是使用location对象.在今天这个代码小技巧中,我们使用另外一个比较异类的方式处理和解析URL. 代码如下: function parseUR ...
- # node中的url常用方法解析
url字符串是一个结构化的字符串,由好几个有意义部分组成.我们在工作中不可避免的会用到其中的某个部分,最原始的通过字符串截取和正则匹配的方法难免用起来会不太方便和美观,所以在我们的nodejs中提供了 ...
- Javascript 利用a标签自动解析URL分析网址实例
/* * @function: 通过a标签解析url标签 * @param:url url参数是字符串,解析的目标 通过IE6-9 chrome Firefox测试 * */ function par ...
- 【javascript】利用 a 标签自动解析 url
很多时候,我们有从 url 中提取域名,查询关键字,变量参数值等的需求,然而我们可以让浏览器方便地帮助我们完成这一任务而不用写正则去抓取.方法就是先创建一个 a 标签然后将需要解析的 url 赋值给 ...
- Django---路由系统,URLconf的配置,正则表达式的说明(位置参数),分组命名(捕获关键字参数),传递额外的参数给视图,命名url和url的反向解析,url名称空间
Django---路由系统,URLconf的配置,正则表达式的说明(位置参数),分组命名(捕获关键字参数),传递额外的参数给视图,命名url和url的反向解析,url名称空间 一丶URLconf配置 ...
- Javascript常用方法函数收集(二)
Javascript常用方法函数收集(二) 31.判断是否Touch屏幕 function isTouchScreen(){ return (('ontouchstart' in window) || ...
随机推荐
- Linux(Ubuntu)使用日记------markdown文件与pdf,doc,docx文件的相互转化(pandoc使用)
安装: sudo apt-get install pandoc 使用: man pandoc 查看帮助文档 直接转换,命令如下: pandoc -f markdown -t docx ./test ...
- VUE如何实现切换页面时的过渡动画?
最近再写页面的时候,感觉页面之间的切换有点生硬,所以查了一下文档看见了transition这个组建,很实用,故此在这里跟大家分享一下 --------------------------------- ...
- ERP常见问题总结处理
1. ERP系统的重量录入组件设计不合理易导致录入错误 如下图所示: 修正方法: 1. 更正数据 使用SQL语句更正数据,已经生产完成,作为单据重新录入比较麻烦 UPDATE e_wms_materi ...
- SpringBoot配置activemq消息队列
1.配置pom相关依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactI ...
- P1238 走迷宫
原题链接 https://www.luogu.org/problemnew/show/P1238 为了巩固一下刚学习的广搜,练一下迷宫类型的题 不过这道题我用的深搜..... 看问题,我们就知道这道题 ...
- docker添加阿里云专属镜像
阿里云镜像地址:https://link.zhihu.com/?target=https%3A//cr.console.aliyun.com/%23/accelerator 根据提示开启容器镜像服务, ...
- Linux系统中硬链接和软链接(符号链接)的区别
首先是创建链接的命令 ln file link //创建硬链接 ln -s item link //创建软链接 区别 硬链接 硬链接是一开始Unix创造链接的方式,而软连接就更现代一点.创建硬链接的时 ...
- 20165223《网络对抗技术》Exp0 Kali的安装
(1)安装步骤 Kali官网,下载Kali Linux 64 bit版本,按照网上安装教程进行即可 我是直接拷贝了Kali的.vmx文件(Linux 64bit),在上学期已经安装好的VMware中可 ...
- ab命令
ab -V -n在测试会话中所执行的请求个数.默认时,仅执行一个请求.请求的总数量 -c一次产生的请求个数.默认是一次一个.请求的用户量 -t测试所进行的最大秒数.其内部隐含值是-n 50000,它可 ...
- Word转PDF(SaveAsPDFandXPS + jacob)
Windows系统下 1.下载所需插件和jar包 SaveAsPDFandXPS(微软自带office转PDF.XPS):http://www.microsoft.com/zh-cn/download ...