您的位置:首页 > Web前端 > JavaScript

js-项目常用方法定义

2017-11-01 17:05 337 查看
//查找父级元素
function findParentByNodeName(targets,parentNode){
var that;
if(targets.nodeName.indexOf(parentNode)>-1){
that = targets;
}else if(targets.parentNode.nodeName.indexOf(parentNode)>-1){
that = targets.parentNode;
}else{
that = findParentByNodeName(targets.parentNode,parentNode);
}
return that;
}

//查找父级元素
function findParentByCls(targets,parentCls){
var that;

if(targets.parentNode.nodeName =='HTML'){ //这是根目录
return null;
}

if(targets.className.indexOf(parentCls)>-1){
that = targets;
}else if(targets.parentNode.className.indexOf(parentCls)>-1){
that = targets.parentNode;
}else{
that = findParentByCls(targets.parentNode,parentCls);
}
return that;
}

//查找子元素
function findChildByNodeName(targets,nodeName){
var that;
if(targets.nodeName == nodeName){
that = targets;
}else{
// targets.childNodes.forEach(function(val,index,arr){
// if(val.nodeName == nodeName){
// that = val;
// return that;
// }
// });

for(var i=0,l=targets.childNodes.length;i<l;i++){
if(targets.childNodes[i].nodeName == nodeName){
that = targets.childNodes[i];
return that;
}
}
}
return that;
}

// 截取当前页面链接后的参数
function getCurLinkParam(){
var url = location.search;//获取链接?后的字符串
var newObj = new Object();
if(url.indexOf('?') != -1){
var str = url.substr(1);
var strs = str.split('&');
for(var i=0;i<strs.length;i++){
newObj[strs[i].split('=')[0]] = (strs[i].split('=')[1]);
}
}
return newObj;
}
// 设置默认值
// 当paramsName为undefined,则设置为defaultValue
function getCurPathParam(paramsName,defaultValue){
var newObj = getCurLinkParam();
var result = newObj[paramsName];
if(result==undefined){
result=defaultValue;
}
try {
result = decodeURIComponent(result);
} catch (e) {
// TODO: handle exception
}
return result;
}

// 获取style属性值 obj:dom-id attr:style属性名
function getStyle(obj,attr){
if(!obj)return null;
if(window.getComputedStyle){
return getComputedStyle(obj,null)[attr];
}else{ //兼容ie
return obj.currentStyle[attr]
}
}

//去除字符串前后空格
function trimStr(str){
return str.replace(/(^\s*)|(\s*$)/g, "");
}

// json数组 通过某属性去重
Array.prototype.uniqueJson = function(attr){
console.info('数组json去重-uniqueJson');
var res = [];
var json = {};
for(var i = 0; i < this.length; i++){
if(!json[this[i][attr]]){
res.push(this[i]);
json[this[i][attr]] = 1;
}
}
// console.log(res)
return res;
}

// 数组 - 升序/降序-排列
/*
* @description 根据某个字段实现对json数组的排序
* @param array 要排序的json数组对象
* @param field 排序字段(此参数必须为字符串)
* @param reverse 是否倒序(默认为1,升序)
* @return array 返回排序后的json数组
*/
function descenFn(array, field, reverse) {
//数组长度小于2 或 没有指定排序字段 或 不是 object 格式数据
if(array.length < 2 || !field || typeof array[0] !== "object"){
console.log('直接返回');
return array
};
//数字类型排序
if(typeof array[0][field] === "number") {
array.sort(function(x, y) { return x[field] - y[field]});
}
//字符串类型排序
if(typeof array[0][field] === "string") {
array.sort(function(x, y) { return x[field].localeCompare(y[field])});
}
//倒序
if(reverse==2){
array.reverse();
}
return array;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: