diff --git a/dist/relationship.js b/dist/relationship.js index 5be35d8..7d3246f 100644 --- a/dist/relationship.js +++ b/dist/relationship.js @@ -610,7 +610,7 @@ 'f,m,m,xs,d,d':['再从母姑母'], 'f,m,m,xs,d,d,h':['再从母姑父'], // 舅表* - 'f,m,xb':['舅公','舅祖父','舅老爷','舅爷爷','舅爷','舅祖','舅奶爷','太舅父','x舅公'], + 'f,m,xb':['舅公','舅祖父','舅老爷','舅爷爷','舅爷','舅祖','舅奶爷','太舅父','x舅老爷','x舅公'], 'f,m,xb,w':['舅婆','舅祖母','舅奶奶','舅奶','妗婆','太舅母'], // 舅表叔表 'f,m,xb,s&o':['舅表伯父','表伯父','表伯'], @@ -1438,6 +1438,8 @@ 'ob':['哥哥','哥','兄','阿哥','大佬','老哥','兄长','胞哥','大哥','x哥'], 'ob,w':['嫂子','嫂','嫂嫂','阿嫂','兄嫂','大嫂','x嫂'], 'ob,w,f':['兄姻父','兄眷父','姻父'], + 'ob,w,f,f':['兄姻公'], + 'ob,w,f,m':['兄姻婆'], 'ob,w,m':['兄姻母','兄眷母','姻母'], 'ob,w,ob':['兄姻兄','兄眷兄','姻兄'], 'ob,w,ob,w':['兄姻兄妇','兄眷兄妇'], @@ -1453,8 +1455,10 @@ 'ob,w,xs,d':['兄姻甥女','兄眷甥女'], 'lb':['弟弟','弟','细佬','胞弟','老弟','x弟'], 'lb,w':['弟妹','弟媳','弟媳妇','弟妇','x弟妹'], - 'lb,w,f':['弟姻父','姻父'], - 'lb,w,m':['弟姻母','姻母'], + 'lb,w,f':['弟姻父','弟眷母','姻父'], + 'lb,w,f,f':['弟姻公'], + 'lb,w,f,m':['弟姻婆'], + 'lb,w,m':['弟姻母','弟眷母','姻母'], 'lb,w,ob':['弟姻兄','弟眷兄','姻兄'], 'lb,w,ob,w':['弟姻兄妇','弟眷兄妇'], 'lb,w,lb':['弟姻弟','弟眷弟','姻弟'], @@ -1468,10 +1472,10 @@ 'lb,w,xs,s':['弟姻甥男','弟眷甥男'], 'lb,w,xs,d':['弟姻甥女','弟眷甥女'], 'xb':['兄弟'], - 'xb,w,f':['姻伯父','姻世伯'], - 'xb,w,f,f':['姻伯公'], - 'xb,w,f,m':['姻伯婆'], - 'xb,w,m':['姻伯母'], + 'xb,w,f,ob':['姻伯父'], + 'xb,w,f,ob,w':['姻伯母'], + 'xb,w,f,lb':['姻叔父'], + 'xb,w,f,lb,w':['姻叔母'], '0,xb,w,xb,s':['舅眷舅男'], '1,xb,w,xb,s':['叔眷舅男'], '0,xb,w,xb,d':['舅眷舅女'], @@ -1558,10 +1562,10 @@ 'ls,h,xs,s':['妹姻侄男'], 'ls,h,xs,d':['妹姻侄女'], 'xs':['姐妹','姊妹'], - 'xs,h,f':['姻伯父','姻世伯'], - 'xs,h,f,f':['姻伯公'], - 'xs,h,f,m':['姻伯婆'], - 'xs,h,m':['姻伯母'], + 'xs,h,f,ob':['姻伯父'], + 'xs,h,f,ob,w':['姻伯母'], + 'xs,h,f,lb':['姻叔父'], + 'xs,h,f,lb,w':['姻叔母'], '0,xs,h,xb,s':['姨姻叔男'], '1,xs,h,xb,s':['姑姻叔男'], '0,xs,h,xb,d':['姨姻叔女'], @@ -1767,17 +1771,26 @@ 'd,h,xs,d':['女息姻外孙女','息姻外孙女'], }; - //数组去重 + // 数组去重 var unique = function(arr) { var result = [], hash = {}; var item; for (var i = 0; (item = arr[i]) != null; i++) { var temp = item.replace(/[ol](?=s|b)/,'x').replace(/&[ol]/,''); //对特殊语法标识相互包含的行为去重 - if (!hash[item]&&!hash[temp]){ - result.push(item); + if (temp==item&&!hash[temp]){ hash[item] = true; } } + for (var i = 0; (item = arr[i]) != null; i++) { + var temp = item.replace(/[ol](?=s|b)/,'x').replace(/&[ol]/,''); //对特殊语法标识相互包含的行为去重 + if (temp!=item){ + if(!hash[temp]){ + result.push(item); + } + }else{ + result.push(item); + } + } return result; }; @@ -1820,7 +1833,7 @@ return match?result:[]; } - // 简化选择器 + // 选择器转ID function selector2id(selector,sex){ var result = []; var hash = {}; @@ -1872,7 +1885,7 @@ return unique(result); } - //获取数据 + // 通过ID获取数据 function getDataById(id){ var items = []; var getData = function(d){ @@ -1918,7 +1931,7 @@ return items; } - //逆转ID + // 逆转ID function reverseId(id,sex){ var hash = { f:['d','s'], @@ -1956,7 +1969,7 @@ return ''; } - //获取关系链条 + // 通过ID获取关系链条 function getChainById(id){ var arr = id.split(','); var items = []; @@ -1967,45 +1980,93 @@ return items.join('的'); } + // 合并选择器,查找两个对象之间的关系 + function mergeSelector(from,to){ + var Index = 0; + var from_arr = from.split(','); + var to_arr = to.split(','); + for(var i=0;i-1?data['sex']:options.sex; + var ids = selector2id(data['selector'],sex); + // console.log('[ids]',ids); + for(var j=0;j-1&&(!l&&f.length||b.push(l),h=!0)}if(h||(d=!1),x.length){for(var e=[],l=0;l-1&&(s=","+f+s),s.match(/,[w0],w|,[h1],h/))return!1;var m=function(s){var f="";if(!d[s]){d[s]=!0;var w=!0;do{f=s;for(var h in b){var l=b[h];if(s=s.replace(l.exp,l.str),s.indexOf("#")>-1){for(var o=s.split("#"),e=0;e-1?d="&l":s.indexOf("&l")>-1&&(d="&o"),s){s=s.replace(/&[ol]/g,""),f=f?1:0;var m=(","+f+","+s).replace(/,[fhs]|,[olx]b/g,",1").replace(/,[mwd]|,[olx]s/g,",0");m=m.substring(0,m.lastIndexOf(","));for(var b=s.split(",").reverse(),w=m.split(",").reverse(),h=[],l=0;l-1&&(!l&&f.length||b.push(l),w=!0)}if(w||(d=!1),x.length){for(var e=[],l=0;l-1&&(s=","+f+s),s.match(/,[w0],w|,[h1],h/))return!1;var m=function(s){var f="";if(!d[s]){d[s]=!0;var b=!0;do{f=s;for(var h in w){var l=w[h];if(s=s.replace(l.exp,l.str),s.indexOf("#")>-1){for(var o=s.split("#"),e=0;e-1?d="&l":s.indexOf("&l")>-1&&(d="&o"),s){s=s.replace(/&[ol]/g,""),f=f?1:0;var m=(","+f+","+s).replace(/,[fhs]|,[olx]b/g,",1").replace(/,[mwd]|,[olx]s/g,",0");m=m.substring(0,m.lastIndexOf(","));for(var b=s.split(",").reverse(),w=m.split(",").reverse(),h=[],l=0;l-1?l.sex:h.sex;for(var e=f(l.selector,o),r=0;r setTimeout(function(){ if(location.hostname.indexOf('passer-by.com')<0){ - location.href = 'http://passer-by.com/'; + //location.href = 'http://passer-by.com/'; }else if( window.top != window.self ) { window.top.location = self.location.href; } @@ -45,78 +45,132 @@

当前已收录约1450条亲戚关系

-
-
- 计算类型: - - + +
+
+
+
+ 我的性别: + + +
+
+ 称呼方式: + + +
+
+
+ +
+
+
+

快速选择:

+

+ + + + + + + + + + + + + + + + + + + + +

+
+
+ + + +
+
+
+

计算结果:

+

+
+
+
+
+
+ 输入称呼: + +
+
+
+
+ + +
+
+
+

计算结果:

+

+
+
+
+
+
+ +
+
+ 称呼方式: + + +
+
+ +
+
+
+
+ + +
+
+
+

计算结果:

+

+
-
-
- 我的性别: - - -
-
- 称呼方式: - - -
+
+
-
- -
-

-
- - - - - - - - - - - - - - - - - - - - -

-

- - - -

-

计算结果:

-

- -

@@ -151,85 +205,163 @@ diff --git a/readme.md b/readme.md index d676906..b193cbc 100644 --- a/readme.md +++ b/readme.md @@ -43,8 +43,9 @@ relationship(options); ```js var options = { text:'', //输入的文本 + target:'', //针对对象:空表示自己 sex:-1, //自己的性别:0女性,1男性 - type:'default', //转换类型:'default'算称谓,'chain'算关系(此时reverse无效) + type:'default', //转换类型:'default'算称谓,'chain'算关系 reverse:false //称呼方式:true对方称呼我,false我称呼对方 }; ``` diff --git a/script/common.js b/script/common.js deleted file mode 100644 index 139a683..0000000 --- a/script/common.js +++ /dev/null @@ -1,95 +0,0 @@ -if (typeof Array.prototype.indexOf != "function") { - Array.prototype.indexOf = function (searchElement, fromIndex) { - var index = -1; - fromIndex = fromIndex * 1 || 0; - for (var k = 0, length = this.length; k < length; k++) { - if (k >= fromIndex && this[k] === searchElement) { - index = k; - break; - } - } - return index; - }; -} - -if(!String.prototype.trim) { - String.prototype.trim = function () { - return this.replace(/^\s+|\s+$/g,''); - }; -} - -//跨浏览器DOM对象 -var DOMUtil = { - getStyle:function(node,attr){ - return node.currentStyle ? node.currentStyle[attr] : getComputedStyle(node,0)[attr]; - }, - getScroll:function(){ //获取滚动条的滚动距离 - var scrollPos={}; - if (window.pageYOffset||window.pageXOffset) { - scrollPos['top'] = window.pageYOffset; - scrollPos['left'] = window.pageXOffset; - }else if (document.compatMode && document.compatMode != 'BackCompat'){ - scrollPos['top'] = document.documentElement.scrollTop; - scrollPos['left'] = document.documentElement.scrollLeft; - }else if(document.body){ - scrollPos['top'] = document.body.scrollTop; - scrollPos['left'] = document.body.scrollLeft; - } - return scrollPos; - }, - getClient:function(){ //获取浏览器的可视区域位置 - var l,t,w,h; - l = document.documentElement.scrollLeft || document.body.scrollLeft; - t = document.documentElement.scrollTop || document.body.scrollTop; - w = document.documentElement.clientWidth; - h = document.documentElement.clientHeight; - return {'left':l,'top':t,'width':w,'height':h} ; - }, - getNextElement:function(node){ //获取下一个节点 - if(node.nextElementSibling){ - return node.nextElementSibling; - }else{ - var NextElementNode = node.nextSibling; - while(NextElementNode.nodeValue != null){ - NextElementNode = NextElementNode.nextSibling - } - return NextElementNode; - } - }, - getElementById:function(idName){ - return document.getElementById(idName); - }, - getElementsByClassName:function(className,context,tagName){ //根据class获取节点 - if(typeof context == 'string'){ - tagName = context; - context = document; - }else{ - context = context || document; - tagName = tagName || '*'; - } - if(context.getElementsByClassName){ - return context.getElementsByClassName(className); - } - var nodes = context.getElementsByTagName(tagName); - var results= []; - for (var i = 0; i < nodes.length; i++) { - var node = nodes[i]; - var classNames = node.className.split(' '); - for (var j = 0; j < classNames.length; j++) { - if (classNames[j] == className) { - results.push(node); - break; - } - } - } - return results; - }, - addClass:function(node,classname){ //对节点增加class - if(!new RegExp("(^|\s+)"+classname).test(node.className)){ - node.className = (node.className+" "+classname).replace(/^\s+|\s+$/g,''); - } - }, - removeClass:function(node,classname){ //对节点删除class - node.className = (node.className.replace(classname,"")).replace(/^\s+|\s+$/g,''); - } -}; \ No newline at end of file diff --git a/script/relationship.js b/script/relationship.js index 5be35d8..7d3246f 100644 --- a/script/relationship.js +++ b/script/relationship.js @@ -610,7 +610,7 @@ 'f,m,m,xs,d,d':['再从母姑母'], 'f,m,m,xs,d,d,h':['再从母姑父'], // 舅表* - 'f,m,xb':['舅公','舅祖父','舅老爷','舅爷爷','舅爷','舅祖','舅奶爷','太舅父','x舅公'], + 'f,m,xb':['舅公','舅祖父','舅老爷','舅爷爷','舅爷','舅祖','舅奶爷','太舅父','x舅老爷','x舅公'], 'f,m,xb,w':['舅婆','舅祖母','舅奶奶','舅奶','妗婆','太舅母'], // 舅表叔表 'f,m,xb,s&o':['舅表伯父','表伯父','表伯'], @@ -1438,6 +1438,8 @@ 'ob':['哥哥','哥','兄','阿哥','大佬','老哥','兄长','胞哥','大哥','x哥'], 'ob,w':['嫂子','嫂','嫂嫂','阿嫂','兄嫂','大嫂','x嫂'], 'ob,w,f':['兄姻父','兄眷父','姻父'], + 'ob,w,f,f':['兄姻公'], + 'ob,w,f,m':['兄姻婆'], 'ob,w,m':['兄姻母','兄眷母','姻母'], 'ob,w,ob':['兄姻兄','兄眷兄','姻兄'], 'ob,w,ob,w':['兄姻兄妇','兄眷兄妇'], @@ -1453,8 +1455,10 @@ 'ob,w,xs,d':['兄姻甥女','兄眷甥女'], 'lb':['弟弟','弟','细佬','胞弟','老弟','x弟'], 'lb,w':['弟妹','弟媳','弟媳妇','弟妇','x弟妹'], - 'lb,w,f':['弟姻父','姻父'], - 'lb,w,m':['弟姻母','姻母'], + 'lb,w,f':['弟姻父','弟眷母','姻父'], + 'lb,w,f,f':['弟姻公'], + 'lb,w,f,m':['弟姻婆'], + 'lb,w,m':['弟姻母','弟眷母','姻母'], 'lb,w,ob':['弟姻兄','弟眷兄','姻兄'], 'lb,w,ob,w':['弟姻兄妇','弟眷兄妇'], 'lb,w,lb':['弟姻弟','弟眷弟','姻弟'], @@ -1468,10 +1472,10 @@ 'lb,w,xs,s':['弟姻甥男','弟眷甥男'], 'lb,w,xs,d':['弟姻甥女','弟眷甥女'], 'xb':['兄弟'], - 'xb,w,f':['姻伯父','姻世伯'], - 'xb,w,f,f':['姻伯公'], - 'xb,w,f,m':['姻伯婆'], - 'xb,w,m':['姻伯母'], + 'xb,w,f,ob':['姻伯父'], + 'xb,w,f,ob,w':['姻伯母'], + 'xb,w,f,lb':['姻叔父'], + 'xb,w,f,lb,w':['姻叔母'], '0,xb,w,xb,s':['舅眷舅男'], '1,xb,w,xb,s':['叔眷舅男'], '0,xb,w,xb,d':['舅眷舅女'], @@ -1558,10 +1562,10 @@ 'ls,h,xs,s':['妹姻侄男'], 'ls,h,xs,d':['妹姻侄女'], 'xs':['姐妹','姊妹'], - 'xs,h,f':['姻伯父','姻世伯'], - 'xs,h,f,f':['姻伯公'], - 'xs,h,f,m':['姻伯婆'], - 'xs,h,m':['姻伯母'], + 'xs,h,f,ob':['姻伯父'], + 'xs,h,f,ob,w':['姻伯母'], + 'xs,h,f,lb':['姻叔父'], + 'xs,h,f,lb,w':['姻叔母'], '0,xs,h,xb,s':['姨姻叔男'], '1,xs,h,xb,s':['姑姻叔男'], '0,xs,h,xb,d':['姨姻叔女'], @@ -1767,17 +1771,26 @@ 'd,h,xs,d':['女息姻外孙女','息姻外孙女'], }; - //数组去重 + // 数组去重 var unique = function(arr) { var result = [], hash = {}; var item; for (var i = 0; (item = arr[i]) != null; i++) { var temp = item.replace(/[ol](?=s|b)/,'x').replace(/&[ol]/,''); //对特殊语法标识相互包含的行为去重 - if (!hash[item]&&!hash[temp]){ - result.push(item); + if (temp==item&&!hash[temp]){ hash[item] = true; } } + for (var i = 0; (item = arr[i]) != null; i++) { + var temp = item.replace(/[ol](?=s|b)/,'x').replace(/&[ol]/,''); //对特殊语法标识相互包含的行为去重 + if (temp!=item){ + if(!hash[temp]){ + result.push(item); + } + }else{ + result.push(item); + } + } return result; }; @@ -1820,7 +1833,7 @@ return match?result:[]; } - // 简化选择器 + // 选择器转ID function selector2id(selector,sex){ var result = []; var hash = {}; @@ -1872,7 +1885,7 @@ return unique(result); } - //获取数据 + // 通过ID获取数据 function getDataById(id){ var items = []; var getData = function(d){ @@ -1918,7 +1931,7 @@ return items; } - //逆转ID + // 逆转ID function reverseId(id,sex){ var hash = { f:['d','s'], @@ -1956,7 +1969,7 @@ return ''; } - //获取关系链条 + // 通过ID获取关系链条 function getChainById(id){ var arr = id.split(','); var items = []; @@ -1967,45 +1980,93 @@ return items.join('的'); } + // 合并选择器,查找两个对象之间的关系 + function mergeSelector(from,to){ + var Index = 0; + var from_arr = from.split(','); + var to_arr = to.split(','); + for(var i=0;i-1?data['sex']:options.sex; + var ids = selector2id(data['selector'],sex); + // console.log('[ids]',ids); + for(var j=0;j