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) || ...
随机推荐
- MySQL性能优化神器—explain
一.explain是什么? 简单来讲就是官方给的一个优化工具,直接在你的SQL语句前加上explain,执行整条语句,之后你就可以根据执行结果优化你的SQL啦,废话不多说,直接刚实例 测试实例 1.创 ...
- Android 1.7 中不支持 lambda 表达式
Error:(129, 32) 错误: -source 1.7 中不支持 lambda 表达式 (请使用 -source 8 或更高版本以启用 lambda 表达式) lambda expressio ...
- 使用react全家桶制作博客后台管理系统
前面的话 笔者在做一个完整的博客上线项目,包括前台.后台.后端接口和服务器配置.本文将详细介绍使用react全家桶制作的博客后台管理系统 概述 该项目是基于react全家桶(React.React-r ...
- springdata 一对多 级联操作 在注解里面开启级联操作@OneToMany(mappedBy = "customer",cascade = CascadeType.ALL)
- html2canvas 识别 svg 解决方案
参考: 预览地址 http://jsfiddle.net/bv16o50f/1/ html <div class="visualization"> <svg xm ...
- Navicat 连接远程服务器mysql 长时间不操作会连接很久
服务器mysql 配置 本地mysql客户端配置 √ navicat 连接配置 右键连接,编辑连接,高级,保持连接间隔勾选,把240改为30,确定
- XMLHttpRequest的使用
XMLHttpRequest的使用 标签(空格分隔): JavaScript 前端 编程 function sendAjax() { //构造表单数据 var formData = new FormD ...
- 【BZOJ4000】[TJOI2015]棋盘(矩阵快速幂,动态规划)
[BZOJ4000][TJOI2015]棋盘(矩阵快速幂,动态规划) 题面 BZOJ 洛谷 题解 发现所有的东西都是从\(0\)开始编号的,所以状压只需要压一行就行了. 然后就可以随意矩乘了. #in ...
- java实现 链表反转
输入一个链表,反转链表后,输出新链表的表头. 递归法 public class RevnNode { public static class Node { public int value; publ ...
- 大规模使用 Apache Kafka 的20个最佳实践
必读 | 大规模使用 Apache Kafka 的20个最佳实践 配图来源:书籍<深入理解Kafka> Apache Kafka是一款流行的分布式数据流平台,它已经广泛地被诸如New Re ...