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) || ...
随机推荐
- Java NIO技术总结
一.背景 大家都知道Java BIO,其全称是java blocking IO,相对的Java NIO 全称为java non-blocking IO.顾名思义,java nio 是一种非阻塞IO.N ...
- 收藏了8年的PHP优秀资源,都给你整理好了
https://segmentfault.com/a/1190000018071558 最后更新于 2019.02.12 以下是我整理好的 PHP 资源,各位看官拿去用,不用再自己找了. 每周在 Gi ...
- React笔记:组件(3)
1. 组件定义 组件是React的核心概念,组件将应用的UI拆分成独立的.可复用的模块. 定义组件的两种方式: (1)类组件:使用ES6 class (2)函数组件:使用函数 使用class定义组件的 ...
- 在vue 里使用腾讯ditu
https://www.cnblogs.com/mrer/p/7144705.html
- 图片的HTML
Code <center> <img style="border-radius: 0.3125em; box-shadow: 0 2px 4px 0 rgba(34,36, ...
- 前端js日期时间格式转换
前端前后端接口处理时经常会遇到需要转换不同时间格式的情况,比如时间戳格式转换成正常日期显示来进行前端展示. 下面是分享一些不同格式的日期转换函数方法. /** * 时间戳转时间 * @param {S ...
- Java实训作业
1.编写程序:声明一个整型变量a,并赋初值5,在程序中判断a是奇数还是偶数,然后输出判断的结果. public class hello{ public static void main(String[ ...
- BZOJ3236[Ahoi2013]作业——莫队+树状数组/莫队+分块
题目描述 输入 输出 样例输入 3 4 1 2 2 1 2 1 3 1 2 1 1 1 3 1 3 2 3 2 3 样例输出 2 2 1 1 3 2 2 1 提示 N=100000,M=1000000 ...
- Mac OSX下安装dlib (Python)
1.在安装Dlib库之前需要安装的库:opencv,numpy 2.安装Xquartz2.7.11 Xquartz是执行Unix程序的图形窗口环境,为了兼容Unix和Linux下移植过来的程序就需要安 ...
- IDictionary使用/声明
因为不常用,老师忘记怎么申明..这次记下来,哪天用了又忘了就来翻翻 主要代码 IDictionary<string, string> openWith = new Dictionary&l ...