从右上到双胎左下右上四个字分别是"x建x制"?

&国内首批特斯拉SUV&&Model&X&&公路体验,车门夹人?漏雨?想知道的都在这
国内首批特斯拉SUV&&Model&X&&公路体验,车门夹人?漏雨?想知道的都在这
日06时30分来源:
特斯拉首款 SUV——Model X ,最近终于在国内交付到第一批用户手上。作为“可能是最好的电动 SUV”,到底多炫酷?!
两位极果体验师,第一时间拿到国内首批 Model X ,这两位车主分别是——天汇星娱联合创始人 于冰 & 美家团创始人 佘达。
极果君这次试驾两辆 Model X 简直激动死。
它们分别价值130W 和 150W。
看视频,你能分辨出来吗?
特斯拉 Model X 是全球首款纯电动 7 座 SUV,四轮驱动,动能强劲,百公里加速仅需 5 秒诶!车身两侧帅气的鹰翼门是其一大亮点。当然,作为一款主打科技的车型,自动驾驶、泊车等黑科技也少不了,简直及万千宠爱于一身。
别光听我吹
具体到底咋样
看一看极果君的亲身感受吧~
(简直冒着生命危险)
鹰翼车门超窄打开距离
首先是没有它 Model X 完全 High 不起来的鹰翼门,虽然看起来又大又笨重,但只需要 30cm 侧面空间就能打开,轻轻松松展翅,上下车方便极了。
但是要注意的是,鹰翼门在关闭的时候,是不会检测有没有人的,即使人没上去,也会继续关闭,极果君可是差点就被夹住了!!!想想都后怕...
自动开关前门
鹰翼门很炫酷,前门也很方便,可以自动开启,踩下刹车就会自动关闭。
自动开启关闭看着很有逼格,但前门同样不会检测有没有人,如果自动开启…撩车撞人绝对难免,建议还是手动开吧。
内部中间座椅可以一键前移,方便后排的小伙伴上车,超方便。但是腿长的欧巴们一定不要做最后一排,有点略挤。头大的亲别怕,空间超足,足够放头。
全景挡风玻璃
为啥头顶空间足?主要是靠这个帅气又霸道的全景挡风玻璃,视野一直延伸到前排两个座椅正上方,看景色足够赏心悦目~
极果君还拿它和经典7座土豪 SUV —— 沃尔沃 XC90 做了个对比。到底怎样呢?给各位观众老爷卖个关子,直接戳视频进去看呗,两位大神车主还有非常多的新得要和你分享嘿!
你关注极果了吗?你的浏览器禁用了JavaScript, 请开启后刷新浏览器获得更好的体验!
老陆豹 的个人空间
天气: 晴朗心情: 高兴对号入座
——我工作中的“七种浪费”
前几日看了克劳士比中国学院总裁杨钢先生的《零缺陷》教材,我就对我的工作想说点什么。
今天,看了“七种浪费”,心有感触,又刚好对号入座,剖析自我,打算在今后的工作当中,勇敢面对七种的浪费,进行不折不挠的斗争,从而提高自我。
一、等待的浪费:“我”工作中的等待浪费主要有以下几种情况:1、等待上级的指示。由于自己只是一个普通的员工,没有决定权,以前做计划,发现根本没有办法实现,后来干脆不做,只有等待上级指示。信息反馈给相关的领导以后,领导没有批示,也没有办法,毕竟人家是领导,不考虑别的,就是考虑自己的饭碗,也不敢追问领导为什么这么简单的问题还不回复,只能等待领导批示。如此以来,便造成了等待的浪费。
2、等待外部的回复。供应商出现问题时,与供应商联系并发布PRR后,静待回音,当然也需要不时打电话督促,但PRR什么时候回复我决定不了,尽管公司有规定8小时回复,但大多时候还是没有办法及时获得,只能等。等待浪费。
3、等待下级的报告。对我来说不适用,自己没有下级,自己已经是最下级了,没有人会向我汇报东西的。4、等待生产现场的联系。较严重的等待是“我”对技术、质量、车间等部门问题反馈的等待,尽管有三分钟响应的规定,但是期间的等待也是很致命的。车间出现质量问题后,会及时通知“我”,然后进行响应,你不打电话给“我”,“我”也不知道出现了问题,再说,有些问题可以在线抑制的就在线抑制了。多一事不如少一事,大部分时间是在等待中度过……
我非常惭愧我的工作中竟然出现了上述的等待浪费,该种等待浪费,不仅浪费了我的时间,同时也浪费了我的生命。这种缺乏工作责任心、主动性和工作积极性,满足现状、消极怠工的情况引发的浪费所造成的危害很大,会危害企业的正常运行。 七种浪费之二:协调不利的浪费
“我”工作中的职责之一就是相互配合、相互协调,协调不利带来的浪费主要有下述几种情况:1、工作进程的协调不利。有些工作需要与其他部门协调,我只是一个普通的员工,让我去协调人家的主任、值班长、主管等等,当然会有难度,他们凭什么听我的,因此工作进度受到影响。某些工作责任界定不明确,处于断层,大家都在观望停滞,认为应该别的部门负责,结果工作没人管,原来的小问题被拖成了大问题。比如KD件的货损锈蚀,小问题拖成了大问题,几十万的报废,我也觉得很难过,这么简单的问题,竟然因为协调不利而发生。
2、领导指示的贯彻协调不利。对领导的工作指示及相关会议布置的工作没有正确理解、传达、并没有有效的协调组织落实、推进,致使整体进度受影响,没有得到有效地贯彻,延误了时机。比如我所负责的业务实施计划以及制造质量,标准有了,什么都有了,就是推行起来很困难,同时也包括我所负责的TS16949体系,推行起来总是会有问题出现。 3、信息传递的协调不利。信息在相关部门、相关人员手中停滞,使应该得到这些信息的相关部门掌握不到,难以有效地开展工作,不能准确及时决策,造成较大的浪费。如PRR的跟踪协调, PCR的内容反馈,问题跟踪表的状态更新等等,没有将信息及时的传递给相关的人员。
上述这些问题都是协调上的问题,应该没有什么难度,为什么一直无法实现?从而导致最后的失败?协调不利是管理工作中的浪费之一,它使我们之间的不能形成凝聚力,缺乏团队意识、协调精神,从而导致工作效率的低下。
七种浪费之三:闲置的浪费我们把管理工作中的库存浪费称之为&闲置&。机构重叠,职能重叠,形成人浮于事,使生产要素不能有效的利用,发挥最大的作用,造成闲置的浪费。
1、职能的闲置或重叠。领导在进行组织设计时为某些岗位设置了一些职能,但在实际工作中,该职能没有发挥作用,造成了部门职能的闲置。我负责夜班工作,夜班的质量问题自己一个人是没有办法解决的,当出现了产品问题以后,除了挑选、换批次外,我没有别的办法,只能留给白天的解决,只能做个反馈。想想,我这么一个大活人,我做这种工作怎么能够承受得了?七老八十的人来做还差不多,绝对的浪费,主要是我有很多需要白天来完成的工作自己晚上没有办法来完成。
在某些情况下,对于某些不十分重要的任务,领导其实只承担签字的职能,但如果无上级的签字或认可,则业务就无法进行,会出现等待和停滞等浪费。我有一次我因公外出,需要派车一部,但是负责部门以没有司机为由不派车,那我就没有办法了。回去找我们经理,我们经理找他们经理,反反复复,这样,期间浪费了大量的时间,好不容易派车了。一个有效的管理者在某种程度上是一个规范化的高手,把复杂工作标准化,规范化、简单化,从而使普通人可以承担原来完成不了的工作,起到较大的作用。
2、人员的闲置。当然我们整个楼上只有我在这里值夜班,一点也不创造价值,属于典型的非增值人员,真应该去掉,可惜我不是领导,领导让我在这里值班,我只能在这里了,不然,恐怕要下岗了。记得某个车间主任曾经说过,你们这些工程师,都是非增值的,要也行,不要也行;然后他顿了一下,其实车间主任也是非增值的。我觉得比较幽默。
扁平化管理、业务流程再造、是工作流程化、规范化、职责化的有效措施,可以从流程中职责到位杜绝闲置的浪费。
七种浪费之四:无序的浪费
缺乏明确的规章、制度、流程,工作中容易产生混乱,这是人所周知的。但是如果有令不行、有章不循,按个人的意愿行事造成的无序浪费,更是非常糟糕的事。
1、职责不清造成的无序。由于制度、管理等方面的原因,造成我的职责两个领导都管,或者说多个领导多管(SQE—我主管管、BIQ—制造部门管、内审员—质量部门管、培训师—人事部门管、党小组长—党支部管、BPD质量负责人—部门领导管)我的工作从原来的有序变成无序,每一个领导安排的工作,我都需要去做,尤其比较紧急时,我就非常为难,到底选择先做哪个呢?四个字:轻重缓急,可是说起来容易,做起来难啊。如果不做就会对总体造成影响,比如我去做培训了,那现场响应可能就没有办法做了,如果我不做培训,那新来的一大群员工就只能等,而计划是人事部门安排好的。更有甚者,有些时候为解决某些问题我挺身而出(解决问题时,双方都向前迈一小步),从大局出发进行解决,结果导致今后有这样的工作就由我来做,没有人再管这个事情了,我都搞不懂这样的事情该谁来做,也可能是我的一小步迈大了吧。这些都是无序浪费。2、其他造成的无序。有些时候出现突然工作时,“我”会以忙现场工作为理由,堂而皇之地拒绝承担该项工作,但这是也无序。当出现部门和人员变更时,工作交接不力、协作不到位,原来形成的工作流程往往被推翻,人为增加从无序恢复到有序的时间。 看看我编制的文件就知道了,经常是我编写好了电子版的,让领导来看,领导看了,说可以了,打印出来以后,领导又指出其中的问题,再修改,再修改……后来换领导了,然后再改……3、有章不循造成的无序。经常去做一些事情,不知道该从什么地方下手,忙了半天之后,才发现流程不对,然后再重新去做。尤其是第一次做某些事情的时候,比如报销发票,第一次报销竟然跑了N趟,不是这里有问题就是那里有问题。
在这种的无序状态中,如何通过有效的方法,使无序变为相对有序,从而整合资源,发挥出最大的效率,这是领导们应该注意和重点考虑的问题之一,当然我自己导致的无序,我会想办法来解决。。七种浪费之五:失职的浪费
失职的浪费是管理中的最大浪费,责任心不强或能力不足的表现形式之一是应付。顾名思义,应付就是工作虽然干了,但是不主动、不认真,敷衍搪塞了事,不是(或是没有能力)追求最好的结果,从而缺乏实际效果,这种浪费在工作中是经常见到的。
在工作中没有计划,没有自查,做事只做前面,随着时间的推移,后面的就忘做了甚至不做了。工作缺乏主动,让做什么事,就做什么事,而不是自己严格要求要做得更好。新安排的事,不会做,也不说一声不会做,不会也不学,只是拖着。这些失职都对工作产生了极大的危害。昨天的事今天没有结果,明天做什么也不知道。失职的浪费主要是能力低下、责任心不强、和工作质量差等造成的,但管理考核及职责的不明确使其没有受到制约和监督。
七种浪费之六:低效的浪费
低效的含义包括: 工作的低效率或者无效率。相对于管理工作的高效率而言,低效率造成的隐性浪费是非常大的;原来只要一个人承担的工作,需要两个以上人员来完成;应该按计划完成的任务反复拖期。近来搞的几个工作,我都没有按期完成,找点理由搪塞一下,上夜班上的。
错误的工作,是一种负效率。没有一次把事情做好就是最大的浪费,应该正确完成的工作被做错,会出现返工、重做、纠正等浪费,甚至影响到整体。如果是高效率地完成了错误的工作,则损失更大。更可怕的是,这种错误在某种程度上是被允许的,会被以各种各样的原因、理由来掩盖住,从而反复发生,造成类似的浪费。比如我在指导工段做防错的时候,里面经常犯一些错误,做的防错没有正确的起到作用,只是一种摆设。
我们允许的是创造性的失误,而不允许反复发生低级的错误。低效率是由什么原因造成的呢?
自己经验的不足、危机意识的淡化,造成满足不了工作的需求。在每个组织中,人员的能力肯定是参差不齐的,抱怨是没有用的,更不能把责任推到普通员工的身上,只有能力低的管理者,而没有绝对能力低的员工。高素质的管理者能够通过培训指导,人尽其才,用人所长,有效地带领员工完成任务。一头狮子带一群羊和一头羊带一群狮子是完全不一样的。 方法不当也是低效率的原因之一。我的反复培训照样出现问题,就是一个很典型的例子。
固步自封的僵化思想是低效率的温床。过去的成功经验、过去行之有效的方法,会使某些&成功&人是沾沾自喜,沉湎于过去的辉煌之中,从而不思进取,不继续提高自己,使用原有的一套来面对千变万化的内部和外部环境,不仅导致了低效率,甚至会拖累整个组织的前进脚步,成为整个组织前进的绊脚石。我应该加强自身的学习了。七种浪费之七:管理成本的浪费管理成本是企业成本构成的一项重要组成部分,而我们现在谈的是一个广义的概念,是指各职能管理部门在组织、管理生产、品质、财务、营销等过程中的各种费用成本。管理必须“理”行事,“理”在企业管理中具体指&目标、指标、计划&,通过确立计划、执行计划、考核计划、改善计划,可以最直观地涉及有形成本概念和浪费现象。 我所编制部门BPD计划编制缺乏依据(第一次做,照搬总公司的)。公司没有下达指标,下面工段无法编制自身的工作目标。公司的目标、指标下达后工段却不知道怎么分解。部门领导没有告诉做什么工作,自己也不知编制计划。我经常没有计划工作概念,缺乏长远工作规划,工作随想随做,自己的计划缺乏可执行性、漏洞百出,有时候拿出一些时间想,却没有去做,造成极大的浪费。领导临时交代或安排的工作打乱原来的计划。计划工作由于前道环节工作没有完成致使计划无法完成。计划由于各种原因被迫频繁调整。公司制订的目标、指标由于执行有困难而不予落实执行,按照自己想象的内容去执行。
费用投入与收入(收益)不配比。晚上上夜班导致正常的白班工作没有办法按时完成,造成了管理上的成本浪费。
通过我的自查,我们可以知道,管理工作中的七种浪费要比生产现场中的七种浪费严重的多,当然解决起来也困难得多。因为生产现场中的浪费大多数可以量化,然而管理工作大多为软性指标,具有较大的弹性,要想进行量化和细化相对较困难。而且大家大多司空见惯,多一事不如少一事,即使上级要求,也是紧一阵后松一阵,形成反复,而如果不能对管理工作中的浪费形成共识,齐抓共管,是很难持续有效地长期开展下去的,因此,对经营管理革新活动的艰巨性和长期性必须要有清醒的认识,要有打持久战的心理准备。但是,管理工作中的浪费一旦在某种程度上被消除,则可能会出现几何级数的放大效应,因此,我们要鼓足勇气,从消除点滴的管理做起,向着经营管理革新的目标一步一步地坚定不移地走下去。
游客无法查看评论和回复, 请先或
浏览: 1386
评论: 9 次
6SQ质量日刊
服务号: Lsqdnet
6SQ质量周刊1.& //定义数组&&
2.& &&&&&&&&var&pageIds&=&new&Array();&&
3.& &&&&&&&&pageIds.push('A');&&
5.& &&&&&&&&数组长度&&
6.& &&&&&&&&pageIds.&&
8.& //shift:删除原数组第一项,并返回删除元素的值;如果数组为空则返回undefined&&&
9.& var&a&=&[1,2,3,4,5];&&&
10.var&b&=&a.shift();&//a:[2,3,4,5]&&&b:1&&&
12.//unshift:将参数添加到原数组开头,并返回数组的长度&&&
13.var&a&=&[1,2,3,4,5];&&&
14.var&b&=&a.unshift(-2,-1);&//a:[-2,-1,1,2,3,4,5]&&&b:7&&&
15.//注:在IE6.0下测试返回值总为undefined,FF2.0下测试返回值为7,所以这个方法的返回值不可靠,需要用返回值时可用splice代替本方法来使用。&&&
17.//pop:删除原数组最后一项,并返回删除元素的值;如果数组为空则返回undefined&&&
18.var&a&=&[1,2,3,4,5];&&&
19.var&b&=&a.pop();&//a:[1,2,3,4]&&&b:5&&&
21.//push:将参数添加到原数组末尾,并返回数组的长度&&&
22.var&a&=&[1,2,3,4,5];&&&
23.var&b&=&a.push(6,7);&//a:[1,2,3,4,5,6,7]&&&b:7&&&
25.//concat:返回一个新数组,是将参数添加到原数组中构成的&&&
26.var&a&=&[1,2,3,4,5];&&&
27.var&b&=&a.concat(6,7);&//a:[1,2,3,4,5]&&&b:[1,2,3,4,5,6,7]&&&
29.//splice(start,deleteCount,val1,val2,):从start位置开始删除deleteCount项,并从该位置起插入val1,val2,&&&
30.var&a&=&[1,2,3,4,5];&&&
31.var&b&=&a.splice(2,2,7,8,9);&//a:[1,2,7,8,9,5]&&&b:[3,4]&&&
32.var&b&=&a.splice(0,1);&//同shift&&&
33.a.splice(0,0,-2,-1);&var&b&=&a.&//同unshift&&&
34.var&b&=&a.splice(a.length-1,1);&//同pop&&&
35.a.splice(a.length,0,6,7);&var&b&=&a.&//同push&&&
37.//reverse:将数组反序&&&
38.var&a&=&[1,2,3,4,5];&&&
39.var&b&=&a.reverse();&//a:[5,4,3,2,1]&&&b:[5,4,3,2,1]&&&
41.//sort(orderfunction):按指定的参数对数组进行排序&&&
42.var&a&=&[1,2,3,4,5];&&&
43.var&b&=&a.sort();&//a:[1,2,3,4,5]&&&b:[1,2,3,4,5]&&&
45.//slice(start,end):返回从原数组中指定开始下标到结束下标之间的项组成的新数组&&&
46.var&a&=&[1,2,3,4,5];&&&
47.var&b&=&a.slice(2,5);&//a:[1,2,3,4,5]&&&b:[3,4,5]&&&
49.//join(separator):将数组的元素组起一个字符串,以separator为分隔符,省略的话则用默认用逗号为分隔符&&&
50.var&a&=&[1,2,3,4,5];&&&
51.var&b&=&a.join("|");&//a:[1,2,3,4,5]&&&b:"1|2|3|4|5"&&&
2.Dom最常用的API
1.& document方法:&&&
2.& getElementById(id)&Node&返回指定结点的引用&&&
3.& getElementsByTagName(name)&NodeList&返回文档中所有匹配的元素的集合&&&
4.& createElement(name)&Node&Node&&&
5.& createTextNode(text)&Node&创建一个纯文本结点&&&
6.& ownerDocument&Document&指向这个节点所属的文档&&&
7.& documentElement&Node&返回html节点&&&
8.& document.body&Node&返回body节点&&&
10.element方法:&&&
11.getAttribute(attributeName)&String&返回指定属性的值&&&
12.setAttribute(attributeName,value)&String&给属性赋值&&&
13.removeAttribute(attributeName)&String&移除指定属性和它的值&&&
14.getElementsByTagName(name)&NodeList&返回结点内所有匹配的元素的集合&&&
16.node方法:&&&
17.appendChild(child)&Node&给指定结点添加一个新的子结点&&&
18.removeChild(child)&Node&移除指定结点的子结点&&&
19.replaceChild(newChild,oldChild)&Node&替换指定结点的子结点&&&
20.insertBefore(newChild,refChild)&Node&在同一层级的结点前面插入新结点&&&
21.hasChildNodes()&Boolean&如果结点有子结点则返回true&&&
23.node属性:&&&
24.nodeName&String&以字符串的格式存放结点的名称&&&
25.nodeType&String&以整型数据格式存放结点的类型&&&
26.nodeValue&String&以可用的格式存放结点的值&&&
27.parentNode&Node&指向结点的父结点的引用&&&
28.childNodes&NodeList&指向子结点的引用的集合&&&
29.firstChild&Node&指向子结点结合中的第一个子结点的引用&&&
30.lastChild&Node&指向子结点结合中的最后一个子结点的引用&&&
31.previousSibling&Node&指向前一个兄弟节点;如果这个节点就是兄弟节点,那么该值为null&&&
32.nextSibling&Node&指向后一个兄弟节点;如果这个节点就是兄弟节点,那么该值为null&
3.常用的数字函数
1.& &数字型(Number)&&&
2.& &&1.声明&&&
3.& &&&&var&i&=&1;&&&
4.& &&&&var&i&=&new&Number(1);&&&
6.& &&2.字符串与数字间的转换&&&
7.& &&&&var&i&=&1;&&&
8.& &&&&var&str&=&i.toString();&&&&&//结果:&"1"&&&
9.& &&&&var&str&=&new&String(i);&&&&//结果:&"1"&&&
10.&&&&i&=&parseInt(str);&&&&&&&&&&//结果:&1&&&
11.&&&&i&=&parseFloat(str);&&&&&&&&//结果:&1&&
13.&&&&//注意:&parseInt,parseFloat会把一个类似于"32G"的字符串,强制转换成32&&&
15.&&3.判断是否为有效的数字&&&
16.&&&&var&i&=&123;&&var&str&=&"string";&&&
17.&&&&if(&typeof&i&==&"number"&){&}&&&//true&&&
19.&&&&//某些方法(如:parseInt,parseFloat)会返回一个特殊的值NaN(Not&a&Number)&&&
20.&&&&//请注意第2点中的[注意],此方法不完全适合判断一个字符串是否是数字型!!&&&
21.&&&&i&=&parseInt(str);&&&
22.&&&&if(&isNaN(i)&){&}&&&
24.&&4.数字型比较&&&
25.&&&&//此知识与[字符串比较]相同&&&
27.&&5.小数转整数&&&
28.&&&&var&f&=&1.5;&&&
29.&&&&var&i&=&Math.round(f);&&//结果:2&(四舍五入)&&&
30.&&&&var&i&=&Math.ceil(f);&&&//结果:2&(返回大于f的最小整数)&&&
31.&&&&var&i&=&Math.floor(f);&&//结果:1&(返回小于f的最大整数)&&&
33.&&6.格式化显示数字&&&
34.&&&&var&i&=&3.14159;&&&
36.&&&&//格式化为两位小数的浮点数&&&
37.&&&&var&str&=&i.toFixed(2);&&&&&//结果:&"3.14"&&&
39.&&&&//格式化为五位数字的浮点数(从左到右五位数字,不够补零)&&&
40.&&&&var&str&=&i.toPrecision(5);&//结果:&"3.1416"&&&
42.&&7.X进制数字的转换&&&
43.&&&&//不是很懂&-.-&&&
44.&&&&var&i&=&parseInt("0x1f",16);&&&
45.&&&&var&i&=&parseInt(i,10);&&&
46.&&&&var&i&=&parseInt(");&&&
48.&&8.随机数&&&
49.&&&&//返回0-1之间的任意小数&&&
50.&&&&var&rnd&=&Math.random();&&&
51.&&&&//返回0-n之间的任意整数(不包括n)&&&&&&
52.&&&&var&rnd&=&Math.floor(Math.random()&*&n)&
4.网上收藏的javascript堆栈
1.& function&stack(){&&
2.& &&&&&&if(this.top==undefined){&&
3.& &&&&&&//初始化堆栈的顶部指针和数据存放域&&
4.& &&&&&&&&&&&&this.top=0;&&
5.& &&&&&&&&&&&&this.unit=new&Array();&&
6.& &&&&&&}&&
7.& &&&&&&this.push=function(pushvalue){&&
8.& &&&&&&//定义压入堆栈的方法&&&&&&&&&&&&&&
9.& &&&&&&&&&&&&this.unit[this.top]=&&
10.&&&&&&&&&&&&this.top+=1;&&&&&&&&&&&&&&
11.&&&&&&}&&
12.&&&&&&this.readAllElements=function(){&&
13.&&&&&&//定义读取所有数据的方法&&
14.&&&&&&&&&&&&if(this.top==0){&&
15.&&&&&&&&&&&&&&&&&&alert("当前栈空,无法读取数据");&&
16.&&&&&&&&&&&&&&&&&&return("");&&
17.&&&&&&&&&&&&}&&
18.&&&&&&&&&&&&var&count=0;&&
19.&&&&&&&&&&&&var&outStr="";&&
20.&&&&&&&&&&&&&&&&&&&&&&&&&&
21.&&&&&&&&&&&&for(count=0;count&this.count++){&&
22.&&&&&&&&&&&&&&&&&&outStr+=this.unit[count]+",";&&
23.&&&&&&&&&&&&}&&&&&&&&&&&&&&
24.&&&&&&&&&&&&return(outStr);&&
25.&&&&&&}&&
26.&&&&&&this.pop=function(){&&
27.&&&&&&//定义弹出堆栈的方法&&
28.&&&&&&&&&&&&if(this.top==0){&&
29.&&&&&&&&&&&&&&&&&&alert("当前栈空,无法弹出数据");&&
30.&&&&&&&&&&&&&&&&&&return("");&&
31.&&&&&&&&&&&&}&&
32.&&&&&&&&&&&&var&&&&&&popTo=this.unit[this.top-1];&&
33.&&&&&&&&&&&&this.top--;&&
34.&&&&&&&&&&&&return(popTo);&&
35.&&&&&&&&&&&&/*&从堆栈弹出数据,顶部指针减一,不过这里没有做到资源的释放,也&
36.&&&&&&&&&&&&就是说数据仍然存在于this.unit的数组中,只不过无法访问罢了。目前&
37.&&&&&&&&&&&&我也没想到好的办法解决。*/&&
38.&&&&&&}&&
5.最常用的javascript日期函数
1.& &日期型(Date)&&&
2.& &&1.声明&&&
3.& &&&&var&myDate&=&new&Date();&&&&//系统当前时间&&&&
4.& &&&&var&myDate&=&new&Date(yyyy,&mm,&dd,&hh,&mm,&ss);&&&
5.& &&&&var&myDate&=&new&Date(yyyy,&mm,&dd);&&&
6.& &&&&var&myDate&=&new&Date("monthName&dd,&yyyy&hh:mm:ss");&&&
7.& &&&&var&myDate&=&new&Date("monthName&dd,&yyyy");&&&
8.& &&&&var&myDate&=&new&Date(epochMilliseconds);&&&
10.&&2.获取时间的某部份&&&
11.&&&&var&myDate&=&new&Date();&&&
12.&&&&myDate.getYear();&&&&&&&//获取当前年份(2位)&&&
13.&&&&myDate.getFullYear();&&&//获取完整的年份(4位,1970-)&&&
14.&&&&myDate.getMonth();&&&&&&//获取当前月份(0-11,0代表1月)&&&
15.&&&&myDate.getDate();&&&&&&&//获取当前日(1-31)&&&
16.&&&&myDate.getDay();&&&&&&&&//获取当前星期X(0-6,0代表星期天)&&&&&
17.&&&&myDate.getTime();&&&&&&&//获取当前时间(从开始的毫秒数)&&&时间戳!!&&
18.&&&&myDate.getHours();&&&&&&//获取当前小时数(0-23)&&&
19.&&&&myDate.getMinutes();&&&&//获取当前分钟数(0-59)&&&
20.&&&&myDate.getSeconds();&&&&//获取当前秒数(0-59)&&&
21.&&&&myDate.getMilliseconds();&&&//获取当前毫秒数(0-999)&&&
22.&&&&myDate.toLocaleDateString();&&&&//获取当前日期&&&
23.&&&&myDate.toLocaleTimeString();&&&&//获取当前时间&&&
24.&&&&myDate.toLocaleString(&);&&&&&&&//获取日期与时间&&&
26.&&3.计算之前或未来的时间&&&
27.&&&&var&myDate&=&new&Date();&&&
28.&&&&myDate.setDate(myDate.getDate()&+&10);&&//当前时间加10天&&&
29.&&&&//类似的方法都基本相同,以set开头,具体参考第2点&&&
31.&&4.计算两个日期的偏移量&&&
32.&&&&var&i&=&daysBetween(beginDate,endDate);&//返回天数&&&
33.&&&&var&i&=&beginDate.getTimezoneOffset(endDate);&//返回分钟数&&&
35.&&5.检查有效日期&&&
36.&&&&//checkDate()&只允许"mm-dd-yyyy"或"mm/dd/yyyy"两种格式的日期&&&
37.&&&&if(&checkDate("")&){&}&&&
39.&&&&//正则表达式(自己写的检查&yyyy-mm-dd,&yy-mm-dd,&yyyy/mm/dd,&yy/mm/dd&四种)&&&
40.&&&&var&r&=&/^(\d{2}|\d{4})[\/-]\d{1,2}[\/-]\d{1,2}$/;&&&
41.&&&&if(&r.test(&myString&)&){&}&&
6.最常用字符窜函数API
1.& &字符串(String)&&&
2.& &&1.声明&&&
3.& &&&&var&myString&=&new&String("Every&good&boy&does&fine.");&&&
4.& &&&&var&myString&=&"Every&good&boy&does&fine.";&&&
6.& &&2.字符串连接&&&
7.& &&&&var&myString&=&"Every&"&+&"good&boy&"&+&"does&fine.";&&&
8.& &&&&var&myString&=&"Every&";&&myString&+=&"good&boy&does&fine.";&&&
10.&&3.截取字符串&&&
11.&&&&//截取第&6&位开始的字符&&&
12.&&&&var&myString&=&"Every&good&boy&does&fine.";&&&
13.&&&&var&section&=&myString.substring(6);&&&&//结果:&"good&boy&does&fine."&&&
15.&&&&//截取第&0&位开始至第&10&位为止的字符&&&
16.&&&&var&myString&=&"Every&good&boy&does&fine.";&&&
17.&&&&var&section&=&myString.substring(0,10);&//结果:&"Every&good"&&&
19.&&&&//截取从第&11&位到倒数第&6&位为止的字符&&&
20.&&&&var&myString&=&"Every&good&boy&does&fine.";&&&
21.&&&&var&section&=&myString.slice(11,-6);&&&&//结果:&"boy&does"&&&
23.&&&&//从第&6&位开始截取长度为&4&的字符&&&
24.&&&&var&myString&=&"Every&good&boy&does&fine.";&&&
25.&&&&var&section&=&myString.substr(6,4);&&&&&//结果:&"good"&&&
27.&&4.转换大小写&&&
28.&&&&var&myString&=&"Hello";&&&
29.&&&&var&lcString&=&myString.toLowerCase();&&//结果:&"hello"&&&
30.&&&&var&ucString&=&myString.toUpperCase();&&//结果:&"HELLO"&&&
32.&&5.字符串比较&&&
33.&&&&var&aString&=&"Hello!";&&&
34.&&&&var&bString&=&new&String("Hello!");&&&
35.&&&&if(&aString&==&"Hello!"&){&}&&&&//结果:&true&&&
36.&&&&if(&aString&==&bString&){&}&&&&&//结果:&true&&&
37.&&&&if(&aString&===&bString&){&}&&&&//结果:&false&(两个对象不同,尽管它们的值相同)&&&
39.&&6.检索字符串&&&
40.&&&&var&myString&=&"hello&everybody.";&&&
41.&&&&//&如果检索不到会返回-1,检索到的话返回在该串中的起始位置&&&
42.&&&&if(&myString.indexOf("every")&&&-1&){&}&//结果:&true&&&
44.&&7.查找替换字符串&&&
45.&&&&var&myString&=&"I&is&your&father.";&&&
46.&&&&var&result&=&myString.replace("is","am");&&&//结果:&"I&am&your&father."&&&
48.&&8.特殊字符:&&&
49.&&&&\b&:&后退符&&&&&&&&&\t&:&水平制表符&&&
50.&&&&\n&:&换行符&&&&&&&&&\v&:&垂直制表符&&&
51.&&&&\f&:&分页符&&&&&&&&&\r&:&回车符&&&
52.&&&&\"&:&双引号&&&&&&&&&\'&:&单引号&&&
53.&&&&\\&:&反斜杆&&&
55.&&9.将字符转换成Unicode编码&&&
56.&&&&var&myString&=&"hello";&&&
57.&&&&var&code&=&myString.charCodeAt(3);&&//返回"l"的Unicode编码(整型)&&&
58.&&&&var&char&=&String.fromCharCode(66);&//返回Unicode为66的字符&&&
60.&&10.将字符串转换成URL编码&&&
61.&&&&var&myString&=&"hello&all";&&&
62.&&&&var&code&=&encodeURI(myString);&&&&&//结果:&"hello%20all"&&&
63.&&&&var&str&=&decodeURI(code);&&&&&&&&&&//结果:&"hello&all"&&&
64.&&&&//相应的还有:&&encodeURIComponent()&&decodeURIComponent()&
7.数字函数
1.& &Math对象&&&
2.& &&1.&Math.abs(num)&:&返回num的绝对值&&&
3.& &&2.&Math.acos(num)&:&返回num的反余弦值&&&
4.& &&3.&Math.asin(num)&:&返回num的反正弦值&&&
5.& &&4.&Math.atan(num)&:&返回num的反正切值&&&
6.& &&5.&Math.atan2(y,x)&:&返回y除以x的商的反正切值&&&
7.& &&6.&Math.ceil(num)&:&返回大于num的最小整数&&&
8.& &&7.&Math.cos(num)&:&返回num的余弦值&&&
9.& &&8.&Math.exp(x)&:&返回以自然数为底,x次幂的数&&&
10.&&9.&Math.floor(num)&:&返回小于num的最大整数&&&
11.&&10.Math.log(num)&:&返回num的自然对数&&&
12.&&11.Math.max(num1,num2)&:&返回num1和num2中较大的一个&&&
13.&&12.Math.min(num1,num2)&:&返回num1和num2中较小的一个&&&
14.&&13.Math.pow(x,y)&:&返回x的y次方的值&&&
15.&&14.Math.random()&:&返回0到1之间的一个随机数&&&
16.&&15.Math.round(num)&:&返回num四舍五入后的值&&&
17.&&16.Math.sin(num)&:&返回num的正弦值&&&
18.&&17.Math.sqrt(num)&:&返回num的平方根&&&
19.&&18.Math.tan(num)&:&返回num的正切值&&&
20.&&19.Math.E&:&自然数(2.045)&&&
21.&&20.Math.LN2&:&2的自然对数(0.9453)&&&
22.&&21.Math.LN10&:&10的自然对数(2.046)&&&
23.&&22.Math.LOG2E&:&log&2&为底的自然数(1.9634)&&&
24.&&23.Math.LOG10E&:&log&10&为底的自然数(0.2518)&&&
25.&&24.Math.PI&:&&(3.793)&&&
26.&&25.Math.SQRT1_2&:&1/2的平方根(0.5476)&&&
27.&&26.Math.SQRT2&:&2的平方根(1.0951)&&&
8.浏览器特征函数
1.& 1.浏览器名称&&&
2.& &&&//IE&:&"Microsoft&Internet&Explorer"&&&
3.& &&&//NS&:&"Netscape"&&&
4.& &&&var&browserName&=&navigator.appN&&&
6.& &2.浏览器版本&&&
7.& &&&bar&browserVersion&=&navigator.appV&&&
9.& &3.客户端操作系统&&&
10.&&&var&isWin&=&(&navigator.userAgent.indexOf("Win")&!=&-1&);&&&
11.&&&var&isMac&=&(&navigator.userAgent.indexOf("Mac")&!=&-1&);&&&
12.&&&var&isUnix&=&(&navigator.userAgent.indexOf("X11")&!=&-1&);&&&
14.&4.判断是否支持某对象,方法,属性&&&
15.&&&//当一个对象,方法,属性未定义时会返回undefined或null等,这些特殊值都是false&&&
16.&&&if(&document.images&){&}&&&
17.&&&if(&document.getElementById&){&}&&&
19.&5.检查浏览器当前语言&&&
20.&&&if(&navigator.userLanguage&){&var&l&=&navigator.userLanguage.toUpperCase();&}&&&
22.&6.检查浏览器是否支持Cookies&&&
23.&&&if(&navigator.cookieEnabled&){&}&&&
9.Javascript面向对象的方法实现继承:call方法
1.& //&动物类&animal&&
2.& function&animal(bSex){&&
3.& &&&&this.sex&=&bSex&&
4.& &&&&this.getSex&=&function(){&&
5.& &&&&&&&&return&this.sex&&
6.& &&&&}&&
8.& //&类静态变量&(如果你不修改它的话~~)&&
9.& animal.SEX_G&=&new&Object();&&&&//&雌性&&
10.animal.SEX_B&=&new&Object();&&&&//&雄性&&
11.//&动物子类&鸟&&
12.function&bird(bSex){&&
13.&&&&animal.call(this,&bSex);&&
14.&&&&this.fly&=&function(iSpeed){&&
15.&&&&&&&&alert("飞行时速高达&"&+&iSpeed);&&
16.&&&&}&&
18.//&动物子类&鱼&&
19.function&fish(bSex){&&
20.&&&&animal.call(this,&bSex);&&
21.&&&&this.swim&=&function(iSpeed){&&
22.&&&&&&&&alert("游动时速高达&"&+&iSpeed)&&
23.&&&&}&&
25.//&鱼&鸟&杂交品种。。。&&
26.function&crossBF(bSex){&&
27.&&&&bird.call(this,&bSex);&&
28.&&&&fish.call(this,&bSex);&&
30.var&oPet&=&new&crossBF(animal.SEX_G);&&&&//&雌性&鱼鸟&&
31.&&&&alert(oPet.getSex()&==&animal.SEX_G&&"雌性"&:&"雄性");&&
32.&&&&oPet.fly(124)&&
33.&&&&oPet.swim(254)&&
10.用面向对象的编程方式写javascript
1.& MyTool&=&new&function(){&&
2.& &&&&&&&&/**&
3.& &&&&&&&&&*&返回非空字符串,如果有默认值就返回默认字符串.&
4.& &&&&&&&&&*/&&
5.& &&&&&&&&this.notNull&=&function(str,defaultStr){&&
6.& &&&&&&&&&&&&&&&&if(typeof(str)=="undefined"||str==null||str==''){&&
7.& &&&&&&&&&&&&&&&&&&&&&&&&if(defaultStr)&&
8.& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&return&defaultS&&
9.& &&&&&&&&&&&&&&&&&&&&&&&&else&&
10.&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&return&'';&&
11.&&&&&&&&&&&&&&&&}&&
12.&&&&&&&&&&&&&&&&else{&&
13.&&&&&&&&&&&&&&&&&&&&&&&&return&&&
14.&&&&&&&&&&&&&&&&}&&
15.&&&&&&&&}&&
18.rootId&=&MyTool.notNull(rootId,'001000');&&&&
11.常用的js方法,包括表单校验的一些方法,下拉菜单常用的方法等等:
2.& &*&对JSON对象转换为字符串.&
3.& &*&@param&{json对象}&json&
4.& &*&@return&{json字符串}&
6.& function&jsonObj2Str(json)&{&&
7.& &&&&&&&&var&str&=&"{";&&
8.& &&&&&&&&for&(prop&in&json)&{&&
9.& &&&&&&&&&&&&&&&&str&+=&prop&+&":"&+&json[prop]&+&",";&&
10.&&&&&&&&}&&
11.&&&&&&&&str&=&str.substr(0,&str.length&-&1);&&
12.&&&&&&&&str&+=&"}";&&&
13.&&&&&&&&return&&&
17.&*&将json字符串转换为json对象.&
18.&*&@param&{json字符串}&jsonstr&
19.&*&@return&{json对象}&
21.function&jsonStr2Obj(jsonstr)&{&&
22.&&&&&&&&&return&eval("("+jsonstr+")");&&
26.&*&得到一个元素的left坐标值.&
27.&*&@param&{dom对象}&obj&
28.&*&@return&{位置值}&
30.function&getLeft(obj){&&&
31.&&&&&&&&var&offset=e.offsetL&&&
32.&&&&&&&&if(e.offsetParent!=null)&offset+=getLeft(e.offsetParent);&&&
33.&&&&&&&&return&&&&
37.&*&得到一个元素的绝对位置的top坐标值.&
38.&*&@param&{dom对象}&obj&
39.&*&@return&{位置值}&
41.function&getTop(obj){&&&
42.&&&&&&&&var&offset=e.offsetT&&&
43.&&&&&&&&if(e.offsetParent!=null)&offset+=getTop(e.offsetParent);&&&
44.&&&&&&&&return&&&&
48.&*&删除一个字符串的左右空格.&
49.&*&@param&{原始字符串}&str&
50.&*&@return&{删除空格之后的字符串}&
52.function&&trim(str)&&
54.&&&return&&str.replace(/(^\s*)|(\s*$)/g,"");&&&&
58.&*&根据id取出一个元素.&
59.&*&@param&{元素id值}&str&
60.&*&@return&{dom对象}&
62.function&$(str)&{&&
63.&&&&&&&&return&document.getElementById(str);&&
67.&*&按name获取一个对象.&
68.&*&@param&{元素name值}&str&
69.&*&@return&{根据name返回的第一个对象}&
71.function&$byName(str)&{&&
72.&&&&&&&&var&arr&=&document.getElementsByName(str);&&
73.&&&&&&&&if&(arr)&&
74.&&&&&&&&&&&&&&&&return&arr[0];&&
75.&&&&&&&&else&&
76.&&&&&&&&&&&&&&&&return&null;&&
79./***************以下方法和表单验证相关*************************************************/&&
81.&*&返回非空字符串,如果有默认值就返回默认字符串.&
82.&*&@param&{要进行转换的原字符串}&str&
83.&*&@param&{默认值}&defaultStr&
84.&*&@return&{返回结果}&
86.function&notNull(str,&defaultStr)&{&&
87.&&&&&&&&if&(typeof(str)&==&"undefined"&||&str&==&null&||&str&==&'')&{&&
88.&&&&&&&&&&&&&&&&if&(defaultStr)&&
89.&&&&&&&&&&&&&&&&&&&&&&&&return&defaultS&&
90.&&&&&&&&&&&&&&&&else&&
91.&&&&&&&&&&&&&&&&&&&&&&&&return&'';&&
92.&&&&&&&&}&else&{&&
93.&&&&&&&&&&&&&&&&return&&&
94.&&&&&&&&}&&
98.&*&比较两个日期大小.&
99.&*&@param&{较小日期的文本框id}&smallDate&
100.& &*&@param&{较大日期的文本框id}&bigDate&
101.& &*&@param&{出错的提示信息}&msg&
102.& &*/&&
103.& function&compareTwoDate(smallDate,&bigDate,&msg)&{&&
104.& &&&&&&&&var&v1&=&$(smallDate).&&
105.& &&&&&&&&var&v2&=&$(bigDate).&&
106.& &&&&&&&&if&(v1&&=&v2)&{&&
107.& &&&&&&&&&&&&&&&&alert(msg);&&
108.& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&v2.focus();&&
109.& &&&&&&&&&&&&&&&&return&false;&&
110.& &&&&&&&&}&&
111.& &&&&&&&&return&true;&&
114.& /**&
115.& &*&比较两个金额大小的方法.&
116.& &*&@param&{较小的金额}&smallNum&
117.& &*&@param&{较大的金额}&bigNum&
118.& &*&@param&{出错提示信息}&msg&
119.& &*&@return&{Boolean}&
120.& &*/&&
121.& function&compareTwoNum(smallNum,&bigNum,&msg)&{&&
122.& &&&&&&&&var&v1&=&$(smallNum).&&
123.& &&&&&&&&var&v2&=&$(bigNum).&&&
124.& &&&&&&&&if&(parseFloat(v1)&&=&parseFloat(v2))&{&&
125.& &&&&&&&&&&&&&&&&alert(msg);&&
126.& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&v2.focus();&&
127.& &&&&&&&&&&&&&&&&return&false;&&
128.& &&&&&&&&}&&
129.& &&&&&&&&return&true;&&
132.& /**&
133.& &*&检查文本框的长度是否超出指定长度.&
134.& &*&@param&{文本id}&textId&
135.& &*&@param&{文本框的最大长度}&len&
136.& &*&@param&{文本框描述内容}&msg&
137.& &*&@return&{有错就返回false,否则返回true}&
138.& &*/&&
139.& function&checkLength(textId,&len,&msg)&{&&
140.& &&&&&&&&obj&=&$(textId);&&
141.& &&&&&&&&str&=&obj.&&
142.& &&&&&&&&str&=&str.replace(/[^\x00-\xff]/g,&"**");&&
143.& &&&&&&&&realLen&=&str.&&
144.& &&&&&&&&if&(realLen&&&len)&{&&
145.& &&&&&&&&&&&&&&&&alert("["&+&msg&+&"]"&+&"长度最大为"&+&len&+&"位,"&+&"请重新输入!\n注意:一个汉字占2位。");&&
146.& &&&&&&&&&&&&&&&&obj.focus();&&
147.& &&&&&&&&&&&&&&&&return&false;&&
148.& &&&&&&&&}&else&&
149.& &&&&&&&&&&&&&&&&return&true;&&
152.& /**&
153.& &*&判断某个文本框不可以为空.&
154.& &*&@param&{文本框id}&textId&
155.& &*&@param&{文本框描述内容}&msg&
156.& &*&@return&{有错就返回false,否则返回true}&
157.& &*/&&
158.& function&checkIfEmpty(textId,&msg)&{&&
159.& &&&&&&&&var&textObj&=&$(textId);&&
160.& &&&&&&&&var&textValue&=&textObj.&&
161.& &&&&&&&&if&(trim(textValue)&==&'')&{&&
162.& &&&&&&&&&&&&&&&&alert('['&+&msg&+&']不得为空!');&&
163.& &&&&&&&&&&&&&&&&textObj.focus();&&
164.& &&&&&&&&&&&&&&&&return&false;&&
165.& &&&&&&&&}&else&{&&
166.& &&&&&&&&&&&&&&&&return&true;&&
167.& &&&&&&&&}&&
170.& /**&
171.& &*&判断指定文本框内容必须为邮件.&
172.& &*&@param&{文本框id}&textId&
173.& &*&@param&{文本框描述}&msg&
174.& &*&@return&{如果是邮件内容就返回true否则返回false}&
175.& &*/&&
176.& function&checkIsMail(textId,&msg)&{&&
177.& &&&&&&&&var&obj&=&$(textId);&&
178.& &&&&&&&&if&(!_isEmail(obj.value))&{&&
179.& &&&&&&&&&&&&&&&&alert('['&+&msg&+&']不是合法的邮件地址!');&&
180.& &&&&&&&&&&&&&&&&obj.focus();&&
181.& &&&&&&&&&&&&&&&&return&false;&&
182.& &&&&&&&&}&else&&
183.& &&&&&&&&&&&&&&&&return&true;&&
186.& /**&
187.& &*&验证是不是邮件.&
188.& &*&@param&{要验证的字符串}&strEmail&
189.& &*&@return&{Boolean}&
190.& &*/&&
191.& function&_isEmail(strEmail)&{&&
192.& &&&&&&&&//接下来的验证是否有两个以上的&.&号,有的话就是错的!&&
193.& &&&&&&&&var&first&=&strEmail.indexOf('.');&&&&
194.& &&&&&&&&if&(strEmail.indexOf('@')==&-1)&{&&
195.& &&&&&&&&&&&&&&&&return&false;&&
196.& &&&&&&&&}&&
197.& &&&&&&&&var&tempStr&=&strEmail.substring(first&+&1);&&
198.& &&&&&&&&&if&(tempStr.indexOf('.')&!=&-1)&{&&
199.& &&&&&&&&&&&&&&&&return&false;&&
200.& &&&&&&&&}&&
201.& &&&&&&&&if&(strEmail&&
202.& &&&&&&&&&&&&&&&&&&&&&&&&.search(/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/)&!=&-1)&{&&
203.& &&&&&&&&&&&&&&&&return&true;&&
204.& &&&&&&&&}&else&&
205.& &&&&&&&&&&&&&&&&return&false;&&
208.& /**&
209.& &*&判断某个文本框是否数字.&
210.& &*&@param&{文本框id}&textId&
211.& &*&@param&{文本框描述内容}&msg&
212.& &*&@return&{Boolean}&
213.& &*/&&
214.& function&checkIsNum(textId,&msg)&{&&
215.& &&&&&&&&obj&=&$(textId);&&
216.& &&&&&&&&if&(isNaN(obj.value))&{&&
217.& &&&&&&&&&&&&&&&&alert('['&+&msg&+&']必须为数字。');&&
218.& &&&&&&&&&&&&&&&&obj.focus();&&
219.& &&&&&&&&&&&&&&&&return&false;&&
220.& &&&&&&&&}&else&&
221.& &&&&&&&&&&&&&&&&return&true;&&
224.& /**&
225.& &*&判断某个文本框是否含有非法字符.&
226.& &*&@param&{文本框的id}&textId&
227.& &*&@param&{文本框描述内容}&msg&
228.& &*&@return&{有错就返回false否则返回true}&
229.& &*/&&
230.& function&checkIsValid(textId,&msg)&{&&
231.& &&&&&&&&obj&=&$(textId);&&
232.& &&&&&&&&if&(!_isValidString(obj.value,&'['&+&msg&+&']不得含有非法字符。'))&{&&
233.& &&&&&&&&&&&&&&&&obj.focus();&&
234.& &&&&&&&&&&&&&&&&return&false;&&
235.& &&&&&&&&}&&
236.& &&&&&&&&return&true;&&
239.& /**&
240.& &*&判断是不是合法字符串.&
241.& &*&@param&{要进行判断的字符串}&szStr&
242.& &*&@param&{文本描述}&errMsg&&
243.& &*&@return&{合法则返回true否则返回false}&
244.& &*/&&
245.& function&_isValidString(szStr,errMsg)&{&&
246.& &&&&&&&&voidChar&=&"'\"&&`~!@#$%^&\(\)()!¥&&?&&&&*";&&
247.& &&&&&&&&for&(var&i&=&0;&i&&&voidChar.&i++)&{&&
248.& &&&&&&&&&&&&&&&&aChar&=&voidChar.substring(i,&i&+&1);&&
249.& &&&&&&&&&&&&&&&&if&(szStr.indexOf(aChar)&&&-1){&&
250.& &&&&&&&&&&&&&&&&&&&&&&&&alert(errMsg)&&
251.& &&&&&&&&&&&&&&&&&&&&&&&&return&false;&&
252.& &&&&&&&&&&&&&&&&}&&
253.& &&&&&&&&}&&
254.& &&&&&&&&return&true;&&
255.& }&&&
257.& /***************&以下方法和下拉菜单相关*************************************************/&&
258.& /**&
259.& &*&控制下拉菜单不可以为-1(未选择情况value=-1)&
260.& &*&@param&{下拉菜单id}&selectId&
261.& &*&@param&{下拉菜单描述内容}&msg&
262.& &*&@param&{下拉菜单的空值对应的value,默认为-1}&nullValue&
263.& &*&@return&{Boolean}&
264.& &*/&&
265.& function&checkChooseSelect(selectId,&msg&,nullValue)&{&&
266.& &&&&&&&&var&obj&=&$(selectId);&&&
267.& &&&&&&&&if&(obj.value&==&notNull(nullValue,'-1'))&{&&
268.& &&&&&&&&&&&&&&&&alert('['&+&msg&+&']必选!');&&
269.& &&&&&&&&&&&&&&&&obj.focus();&&
270.& &&&&&&&&&&&&&&&&return&false;&&
271.& &&&&&&&&}&else&&
272.& &&&&&&&&&&&&&&&&return&true;&&
275.& /**&
276.& &*&得到下拉菜单的显示的文字.&
277.& &*&@param&{下拉菜单dom对象}&selectObj&
278.& &*&@return&{返回下拉菜单的显示的"文本"}&
279.& &*/&&
280.& function&getSelectText(selectObj)&{&&
281.& &&&&&&&return&selectObj.options[selectObj.selectedIndex].&&
284.& /**&
285.& &*&得到下拉菜单的显示的值.&
286.& &*&@param&{下拉菜单dom对象}&selectObj&
287.& &*&@return&{得到下拉菜单的显示的"值"}&
288.& &*/&&
289.& function&getSelectValue(selectObj)&{&&
290.& &&&&&&&&return&selectObj.options[selectObj.selectedIndex].&&
293.& /**&
294.& &*&设置下拉菜单的选择状态到指定的值.&
295.& &*&@param&{下拉菜单对象}&obj&
296.& &*&@param&{要选择的值}&value&
297.& &*/&&
298.& function&setSelectValue(obj,&value)&{&&
299.& &&&&&&&&/*for&(i&=&obj.options.length&-&1;&i&&=&0;&i--)&{&
300.& &&&&&&&&&&&&&&&&if&(obj.options[i].value&==&value)&{&
301.& &&&&&&&&&&&&&&&&&&&&&&&&obj.options[i].selected&=&&
302.& &&&&&&&&&&&&&&&&&&&&&&&&&
303.& &&&&&&&&&&&&&&&&}&
304.& &&&&&&&&}&
305.& */&&
306.& &&&&&&obj.value=&&&
309.& /**&
310.& &*&根据键值串的内容进行下拉菜单的动态组装&
311.& &*&@param&{要进行下拉菜单组装的dom对象}&obj&
312.& &*&@param&{键值对用,和;分割,例如'1,男;2,女;3,未知'}&valAndText&
313.& &*/&&
314.& function&setSelectContent(obj,valAndText){&&
315.& &&&&&&&&if(trim(valAndText)==''){&&
316.& &&&&&&&&&&&&&&&&alert('没有要进行组装下拉菜单的数据!');&&
317.& &&&&&&&&&&&&&&&&return&false;&&&&&&&&&&&&&&&&&&
318.& &&&&&&&&}&&
319.& &&&&&&&&clearSelect(obj);&&
320.& &&&&&&&&var&keyandvalues&=&valAndText.split(';');&&
321.& &&&&&&&&for(var&i=0;i&keyandvalues.i++){&&
322.& &&&&&&&&&&&&&&&&var&arr&=&keyandvalues[i].split(',');&&
323.& &&&&&&&&&&&&&&&&if(arr){&&
324.& &&&&&&&&&&&&&&&&&&&&&&&&var&value&=arr[0];&&&
325.& &&&&&&&&&&&&&&&&&&&&&&&&var&text&=arr[1];&&&
326.& &&&&&&&&&&&&&&&&&&&&&&&&var&objOption&=&new&Option(text,value);&&
327.& &&&&&&&&&&&&&&&&&&&&&&&&obj.add(objOption);&&
328.& &&&&&&&&&&&&&&&&}&&
329.& &&&&&&&&}&&
332.& /**&
333.& &*&清空下拉菜单里面的内容.&
334.& &*&@param&{下拉菜单对象}&obj&
335.& &*/&&
336.& function&clearSelect(obj)&{&&&
337.& &&&&for&(var&i=obj.options.&i&&0;&i--)&{&&
338.& &&&&&&&&obj.remove(0);&&&
339.& &&&&}&&&&&&&&&&
340.& }&&&
342.& /***************&以下方法和多选框相关*************************************************/&&
343.& /**&
344.& &*&返回选中的checks的id组成的字符串,逗号隔开.&
345.& &*&@param&{checks数组}&checks&
346.& &*&@return&选择的id组成的字符串&
347.& &*/&&
348.& function&getCheckedIds(checks){&&
349.& &&&&&&&&var&selectedValue&=&'';&&
350.& &&&&&&&&var&len&=&checks.&&
351.& &&&&&&&&for(var&index=0;&index&&index++)&{&&
352.& &&&&&&&&if(checks[index].checked==true)&{&&
353.& &&&&&&&&&&&&selectedValue&+=&&checks[index].value+",";&&&
354.& &&&&&&&&}&&
355.& &&&&}&&
356.& &&&&&&&&if(selectedValue.length&0)&&
357.& &&&&&&&&&&&&&&&&return&selectedValue.substring(0,selectedValue.length-1);&&
358.& &&&&return&selectedV&&
& & 校验以上JS,代入html进行测试
1.& &HTML&&&
2.& &&&&&&&&&HEAD&&&
3.& &&&&&&&&&&&&&&&&&script&language="javascript"&src="aaaaa.js"&&/script&&&
4.& &&&&&&&&&/HEAD&&&
5.& &&&&&&&&&SCRIPT&LANGUAGE="JavaScript"&&&
6.& &!--&&
8.& &*&表单验证的示例js方法.&&
10.function&check(){&&
11.&&&&&&&&if(checkIfEmpty('a','非空校验')&&
12.&&&&&&&&&&&&&&&&&&checkIsMail('b','邮箱校验')&&
13.&&&&&&&&&&&&&&&&&&checkIsNum('c','数字校验')&&
14.&&&&&&&&&&&&&&&&&&checkIsValid('d','合法性校验')&&
15.&&&&&&&&&&&&&&&&&&compareTwoDate('e','f','小日期与大日期关系错误!')&&
16.&&&&&&&&&&&&&&&&&&checkLength('g',5,'长度校验')&&
17.&&&&&&&&&&&&&&&&&&checkChooseSelect('h','下拉菜单非空','-1')&&
18.&&&&&&&&&&&&&&&&&&compareTwoNum('k','l','大小数目关系不正确!')){&&
19.&&&&&&&&&&&&&&&&alert('校验通过!');&&
20.&&&&&&&&&&&&&&&&return&&&&&&&&&&&
21.&&&&&&&&}else{&&
22.&&&&&&&&&&&&&&&&return&&&
23.&&&&&&&&}&&
27.&*&取下拉菜单的值和文本的示例js方法.&&
29.function&getSelect(){&&
30.&&&&&&&&var&sss&=&$('h');&&
31.&&&&&&&&alert('下拉菜单选择的文本是:'+getSelectText(sss)+'\n'&&
32.&&&&&&&&&&&&&&&&&&&&&&&&+'下拉菜单选择的值是:'+getSelectValue(sss));&&
36.&*&根据键值字符串设置下拉菜单的显示内容.&&
38.function&setSelect(){&&
39.&&&&&&&&var&sss&=&$('i').&&
40.&&&&&&&&setSelectContent($('h'),sss);&&
44.&*&返回多选框数组选择状态的id的字符串,结果以逗号隔开.&&
46.function&getMulti(){&&&
47.&&&&&&&&alert('多选选择的id是:'+getCheckedIds(document.getElementsByName('j')));&&
49.//--&&&
50.&/SCRIPT&&&
51.&&&&&&&&&BODY&&&
52.&&&&&&&&&&&&&&&&&table&&&
53.&&&&&&&&&&&&&&&&&&&&&&&&&tr&&&
54.&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&td&&&
55.&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&非空:&&
56.&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&input&id='a'&&&
57.&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&/td&&&
58.&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&td&&&
59.&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&checkIfEmpty('a','非空校验')&&
60.&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&/td&&&
61.&&&&&&&&&&&&&&&&&&&&&&&&&/tr&&&
62.&&&&&&&&&&&&&&&&&&&&&&&&&tr&&&
63.&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&td&&&
64.&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&邮箱:&&
65.&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&input&id='b'&value=''&&&
66.&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&/td&&&
67.&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&td&&&
68.&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&checkIsMail('b','邮箱校验')&&
69.&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&/td&&&
70.&&&&&&&&&&&&&&&&&&&&&&&&&/tr&&&
71.&&&&&&&&&&&&&&&&&&&&&&&&&tr&&&
72.&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&td&&&
73.&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&数字:&&
74.&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&input&id='c'&value='aaaa'&&&
75.&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&/td&&&
76.&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&td&&&
77.&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&checkIsNum('c','数字校验')&&
78.&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&/td&&&
79.&&&&&&&&&&&&&&&&&&&&&&&&&/tr&&&
80.&&&&&&&&&&&&&&&&&&&&&&&&&tr&&&
81.&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&td&&&
82.&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&合法字符:&&
83.&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&input&id='d'&value='@$@$#$#!%%#'&&&
84.&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&/td&&&
85.&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&td&&&
86.&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&checkIsValid('d','合法性校验')&&
87.&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&/td&&&
88.&&&&&&&&&&&&&&&&&&&&&&&&&/tr&&&
89.&&&&&&&&&&&&&&&&&&&&&&&&&tr&&&
90.&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&td&&&
91.&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&小的日期:&&
92.&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&input&id='e'&value=''&&&
93.&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&大的日期:&&
94.&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&input&id='f'&value=''&&&
95.&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&/td&&&
96.&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&td&&&
97.&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&compareTwoDate('e','f','小日期与大日期关系错误!')&&
98.&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&/td&&&
99.&&&&&&&&&&&&&&&&&&&&&&&&&/tr&&&
100.& &&&&&&&&&&&&&&&&&&&&&&&&&tr&&&
101.& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&td&&&
102.& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&小的数:&&
103.& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&input&id='k'&value='12.3'&&&
104.& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&大的数:&&
105.& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&input&id='l'&value='4564'&&&
106.& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&/td&&&
107.& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&td&&&
108.& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&compareTwoNum('k','l','大小数目关系不正确!')&&
109.& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&/td&&&
110.& &&&&&&&&&&&&&&&&&&&&&&&&&/tr&&&
111.& &&&&&&&&&&&&&&&&&&&&&&&&&tr&&&
112.& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&td&&&
113.& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&字符长度校验(&5):&&
114.& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&input&id='g'&&&
115.& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&/td&&&
116.& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&td&&&
117.& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&checkLength('g',5,'长度校验')&&
118.& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&/td&&&
119.& &&&&&&&&&&&&&&&&&&&&&&&&&/tr&&&
120.& &&&&&&&&&&&&&&&&&&&&&&&&&tr&&&
121.& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&td&&&
122.& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&下拉菜单非空校验:&&
123.& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&select&id='h'&&&
124.& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&option&value='-1'&&&
125.& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&请选择&&
126.& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&/option&&&
127.& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&option&value='1'&&&
128.& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&立项&&
129.& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&/option&&&
130.& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&option&value='2'&&&
131.& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&可研&&
132.& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&/option&&&
133.& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&/select&&&
134.& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&/td&&&
135.& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&td&&&
136.& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&checkChooseSelect('h','下拉菜单非空','-1')&&
137.& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&/td&&&
138.& &&&&&&&&&&&&&&&&&&&&&&&&&/tr&&&
139.& &&&&&&&&&&&&&&&&&&&&&&&&&tr&&&
140.& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&td&colspan='2'&&&
141.& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&button&onclick='check()'&&&
142.& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&测试表单校验方法&&
143.& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&/button&&&
144.& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&/td&&&
145.& &&&&&&&&&&&&&&&&&&&&&&&&&/tr&&&
146.& &&&&&&&&&&&&&&&&&&&&&&&&&tr&&&
147.& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&td&&&
149.& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&button&onclick='getSelect()'&&&
150.& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&得到下拉菜单的值&&
151.& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&/button&&&
152.& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&/td&&&
153.& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&td&&&
154.& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&getSelectText(sss)和getSelectValue(sss)&&
155.& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&/td&&&
156.& &&&&&&&&&&&&&&&&&&&&&&&&&/tr&&&
157.& &&&&&&&&&&&&&&&&&&&&&&&&&tr&&&
158.& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&td&&&
159.& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&输入下拉菜单的键值字符串(如右所示)&&
160.& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&input&id='i'&value='1,男;2,女;3,未知'&&&
161.& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&button&onclick='setSelect()'&&&
162.& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&设置下拉菜单的值&&
163.& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&/button&&&
164.& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&/td&&&
165.& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&td&&&
166.& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&setSelectContent($('h'),sss)&&
167.& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&/td&&&
168.& &&&&&&&&&&&&&&&&&&&&&&&&&/tr&&&
169.& &&&&&&&&&&&&&&&&&&&&&&&&&tr&&&
170.& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&td&&&
172.& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&input&type='checkbox'&name='j'&value='aaa1'&&&
173.& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&input&type='checkbox'&name='j'&value='aaa2'&&&
174.& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&input&type='checkbox'&name='j'&value='aaa3'&&&
175.& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&input&type='checkbox'&name='j'&value='aaa4'&&&
176.& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&button&onclick='getMulti()'&&&
177.& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&得到多选选择的id&&
178.& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&/button&&&
179.& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&/td&&&
180.& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&td&&&
181.& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&getCheckedIds(document.getElementsByName('j'))&&
182.& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&/td&&&
183.& &&&&&&&&&&&&&&&&&&&&&&&&&/tr&&&
184.& &&&&&&&&&&&&&&&&&/table&&&
185.& &&&&&&&&&/BODY&&&
186.& &/HTML&&&
& & Js内容来源于网络,本着大家一起学习的思想,所以分享一下。大家也可以分享下学习Js的方法论噢。一直在学习! &
& & Via & /aehoo/
&&& 附件:本篇文章word文档,点击下载
无相关信息
网友评论仅供其表达个人看法,并不表明网易立场。}

我要回帖

更多关于 左肾右上腺脓肿 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信