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系统设置cpu孤立
介绍 针对cpu密集型的任务,消耗cpu较高,最好设置cpu亲和度,以提高任务执行效率,避免cpu进行上下文切换,浪费不必要的性能. 特定任务(进程/线程)需要独占一个cpu核心并且不想让其他任务(进 ...
- CSS中的opacity,不透明度的坑
opacity的用法示例如下 /* 值是0到1之间的数值 */ opacity:0.5 opacity设置在元素上的时候,会出现什么效果? 答曰:如果不设置opacity的话,会显示效果为A(可以理解 ...
- [转帖]Oracle 补丁体系(PSR/PSU/CPU) 及 opatch 工具 介绍
Oracle 补丁体系(PSR/PSU/CPU) 及 opatch 工具 介绍 原文:http://blog.csdn.net/tianlesoftware/article/details/58095 ...
- javascript深入浅出——学习笔记(包装对象和类型检测)
3包装对象:https://www.imooc.com/video/5676 当我们尝试把基本类型已对象的方式访问时,javascript会把该基本类型转换为对应的包装类型对象(临时对象),相当于ne ...
- Python进阶8---面向对象基础1
面向对象 语言的分类 Python的类 定义 class ClassName: pass class MyCalss: """A example class"& ...
- 【XSY3344】连续段 DP 牛顿迭代 NTT
题目大意 对于一个长度为 \(n\) 的排列 \(p\),我们称一个区间 \([l,r]\) 是连续的当且仅当 \((\max_{l\leq i\leq r}a_i)-(\min_{l\leq i\l ...
- 20175209 实验二《Java面向对象程序设计》实验报告
20175209 实验二<Java面向对象程序设计>实验报告 一.实验前期准备 了解三种代码 伪代码 产品代码 测试代码 我们先写伪代码,伪代码 从意图层面来解决问题: 有了伪代码 我们用 ...
- 微信小程序中-折线图
echarts配置项太多了,还是一点点积累吧~~~~~ 当然前提条件还是得老老实实看echarts官方文档 :https://echarts.baidu.com/ 今天主要就介绍下我在工作中通过ech ...
- Apache Hadoop 2.9.2 完全分布式部署
Apache Hadoop 2.9.2 完全分布式部署(HDFS) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.环境准备 1>.操作平台 [root@node101.y ...
- java实现八大排序算法
Arrays.sort() 采用了2种排序算法 -- 基本类型数据使用快速排序法,对象数组使用归并排序. java的Collections.sort算法调用的是归并排序,它是稳定排序 方法一:直接插入 ...