当前位置:   article > 正文

微信小程序实现MBTI职业性格测试、霍兰德职业兴趣测试_性格测试页面程序

性格测试页面程序

笔者在微信小程序中已实现MBTI职业性格测试、霍兰德职业兴趣测试这两种功能,特此记录分享。

MBTI职业性格测试

程序截图:

小程序中MBTI测试提供了28题简洁版和70题完整版(ps:网上有多种版本,此为笔者选择整理的两种)

以28题为例,题目分为4组,每组7题,每题两个选项,两个选项分别倾向于两种类型(比如选项1对应E,选项2对应I),7题做完后两种倾向累计加分,得分多者记入结果(如E:4分,I:3分,则结果第一个字母为E)。

代码实现部分:

1  主页面代码(测试题版本选择界面)

1.1  second.wxml

  1. <!--pages/second/second.wxml-->
  2. <view class="content-bottom">
  3. <!-- MBTI职业性格测试 -->
  4. <view class="text">
  5. <view class="fk"></view>
  6. <view class="title">
  7. <text>MBTI职业性格测试</text>
  8. </view>
  9. </view>
  10. <view class="nav" >
  11. <view class="bus">
  12. <view class="img">
  13. <image src="/images/mbti1.jpg"></image>
  14. </view>
  15. <view class="con">
  16. <view class="name">简洁版【28道】</view>
  17. <view class="price">免费</view>
  18. <button class="btn" type="button" bindtap="career">立即测试</button>
  19. </view>
  20. </view>
  21. </view>
  22. <view class="nav" >
  23. <view class="bus">
  24. <view class="img">
  25. <image src="/images/mbti2.jpg"></image>
  26. </view>
  27. <view class="con">
  28. <view class="name">完整版【70道】</view>
  29. <view class="price">免费</view>
  30. <button class="btn" type="button" bindtap="career70">立即测试</button>
  31. </view>
  32. </view>
  33. </view>
  34. <!-- 分割线 -->
  35. <view class="fgx"></view>
  36. <!-- 霍兰德职业兴趣测试 -->
  37. <view class="text">
  38. <view class="fk"></view>
  39. <view class="title">
  40. <text>霍兰德职业兴趣测试</text>
  41. </view>
  42. </view>
  43. <view class="nav" >
  44. <view class="bus">
  45. <view class="img">
  46. <image src="/images/霍兰德.jpg"></image>
  47. </view>
  48. <view class="con">
  49. <view class="name">标准版【90道】</view>
  50. <view class="price">免费</view>
  51. <button class="btn" type="button" bindtap="Holland">立即测试</button>
  52. </view>
  53. </view>
  54. </view>
  55. </view>

1.2  second.wxss

  1. /* pages/second/second.wxss */
  2. /* MBTI职业性格测试 */
  3. .content-bottom {
  4. margin-top: 5px;
  5. /* border: red solid 1px; */
  6. }
  7. .fk {
  8. height: 40px;
  9. width: 8px;
  10. background-color: rgb(82, 229, 255);
  11. margin: 10px 20px;
  12. }
  13. .text {
  14. display: flex;
  15. color: #5c616e;
  16. flex-direction: row;
  17. /* justify-content: center;左右居中 */
  18. align-items: center;
  19. /* 上下居中 */
  20. position: relative;
  21. /* border: red solid 1px; */
  22. }
  23. .title {
  24. width: 100%;
  25. font-weight: bolder;
  26. font-size: 20px;
  27. }
  28. .bus {
  29. width: 90%;
  30. height: 240rpx;
  31. display: flex;
  32. justify-content: space-around;
  33. border: solid rgb(157, 240, 255) 1px;
  34. margin: auto auto 8px;
  35. border-radius: 6px;
  36. align-items: center;
  37. }
  38. .bus .img {
  39. width: 40%;
  40. height: 80%;
  41. border: rgb(138, 138, 138) solid 1px;
  42. }
  43. .bus .con {
  44. /* border: red solid 1px; */
  45. width: 60%;
  46. height: 80%;
  47. /* 相对定位 */
  48. position: relative;
  49. overflow: hidden;
  50. }
  51. .bus image {
  52. width: 100%;
  53. height: 100%;
  54. }
  55. .con .name {
  56. font-size: 16px;
  57. margin-top: 2px;
  58. font-weight: bold;
  59. padding-left: 20px;
  60. padding-top: 8px;
  61. opacity: 0.8;
  62. }
  63. .con .price {
  64. margin-top: 30px;
  65. font-size: 12px;
  66. padding-left: 20px;
  67. color: #fcc734;
  68. margin-bottom: 10px;
  69. }
  70. .con .btn {
  71. width: 36%;
  72. color: #ffffff;
  73. background-color: rgb(141, 236, 253);
  74. font-size: 12px;
  75. padding: 5px 7px 5px 7px;
  76. display: inline;
  77. border-radius: 10px;
  78. position: absolute;
  79. right: 14px;
  80. bottom: 12px;
  81. }
  82. /* 分割线 */
  83. .fgx {
  84. border: rgb(224, 224, 224) solid;
  85. margin-top: 15px;
  86. }

1.3  second.js

  1. // pages/second/second.js
  2. Page({
  3. /**
  4. * 页面的初始数据
  5. */
  6. data: {
  7. "imgurl": ["/pictures/meifa_01.jpg", "/pictures/meifa_02.jpg", "/pictures/meifa_03.jpg"],
  8. mbti:["ISTJ","ISFJ","INFJ","INTJ","ISTP","ISFP","INFP","INTP","ESTP","ESFP","ENFP","ENTP","ESTJ","ESFJ","ENFJ","ENTJ"],
  9. option: [
  10. ["内向、感知、思考、判断型这种人一丝不苟、认真负责,而且明智豁达,是坚定不移的社会维护者。他们讲求实际、非常务实,总是孜孜以求精确性和条理性,而且有极大的专注力。不论干什么,他们都能有条不紊、四平八稳地把它完成。对这类人而言,满意的工作是技术性的工作,能生产一种实实在在的产品或有条理地提供一种周详服务。他们需要一种独立的工作环境,有充裕的时间让自己独立工作,并能运用自己卓越的专注力来完成工作。","审计员、后勤经理、信息总监、预算分析员、工程师、技术作者、电脑编程员、证券经纪人、地质学者、医学研究者、会计、文字处理专业人士。"],
  11. ["内向、感知、感觉、判断型这种人忠心耿耿、一心一意、富有同情心,喜欢助人为乐。由于这种人有很强的职业道德,一旦觉得自己的行动确有帮助,他们便会担起重担。最令他们满意的工作是,需要细心观察和精确性要求极高的工作。他们需要通过不声不响地在背后工作以表达自己的感情投入,但个人贡献要能得到承认。","银行官员、项目经理、数据库经理、信息总监、后勤与供应经理、业务运作顾问、证券经纪人、电脑分析人员、保险代理、普通承包商、工厂主管。"],
  12. ["内向、直觉、感觉、判断型这种人极富创意。他们感情强烈、原则性强且具有良好的个人品德,善于独立进行创造性思考。即使面对怀疑,他们对自己的观点仍坚信不疑。看问题常常更能入木三分。对他们来说,称心如意的事业就是,能从事创新型的工作,主要是能帮助别人成长。他们喜欢生产或提供一种自己能感到自豪的产品或服务。工作必须符合个人的价值观。","人力资源经理、事业发展顾问、营销人员、企业组织发展顾问、职位分析人员、企业培训人员、媒体特约规划师、编辑/艺术指导(杂志)、口译人员、社会科学工作者。"],
  13. ["内向、直觉、思考、判断型这类人是完美主义者。他们强烈要求自主、看重个人能力、对自己的创新思想坚定不移,并受其驱使去实现自己的目标。这种人逻辑性强,有判断力,才华横溢,对人对己要求严格。在所有类型的人中,这种人独立性最强,喜欢我行我素。面对反对意见,他们通常多疑、霸道、毫不退让。对权威本身,他们毫不在乎,但只要规章制度有利于他们的长远目标他们就能遵守。最适合的工作是:能创造和开发新颖的解决方案来解决问题或改进现有系统;他们愿意与责任心强,在专业知识、智慧和能力方面能赢得自己敬佩的人合作;他们喜欢独立工作,但需要定期与少量智囊人物切磋交流。","管理顾问、经济学者、国际银行业务职员、金融规划师、设计工程师、运作研究分析人员、信息系统开发商、综合网络专业人员。"],
  14. ["内向、感知、思考、认知型这种人奉行实用主义,喜欢行动,不爱空谈。他们长于分析、敏于观察、好奇心强,只相信可靠确凿的事实。由于非常务实,他们能很好地利用一切可资利用的资源,而且很会瞧准时机。对于ISTP这种人而言,事业满意就是,做尽可能有效利用资源的工作。他们愿意精通机械技能或使用工具来工作。工作必须有乐趣、有活力、独立性强,且常有机会走出工作室去户外。","证券分析员、银行职员、管理顾问、电子专业人士、技术培训人员、信息服务开发人员、软件开发商、海洋生物学者、后勤与供应经理、经济学者。"],
  15. ["内向、感知、感觉、认知型这种类型的人温柔、体贴、敏感,从不轻言非常个人化的理想及价值观。他们常通过行动,而非语言来表达炽烈的情感。这种人有耐心、能屈能伸、且十分随和、无意控制他人。他们从不妄加判断或寻求动机和意义。适合的工作是,做非常符合自己内心价值观的工作。在做有益他人的工作时,希望注重细节。他们希望有独立工作的自由,但又不远离其他与自己合得来的人。他们不喜欢受繁文缛节或一些僵化程序的约束。","优先顾客销售代表、行政人员、商品规划师、测量师、海洋生物学者、厨师、室内/风景设计师、旅游销售经理、职业病理专业人员。"],
  16. ["内向、直觉、感觉、认知型INFP类型的人珍视内在和谐胜过一切。他们敏感、理想化、忠心耿耿,在个人价值观方面有强烈的荣誉感。如果能献身自己认为值得的事业,他们便情绪高涨。在日常事物中,他们通常很灵活、有包容心,但对内心忠诚的事业义无反顾。这类人很少表露强烈的情感,常显得镇静自若、寡言少语。不过,一旦相熟,他们也会变得十分热情。对INFP类型的人而言,最好的工作是,做合乎个人价值观、能通过工作陈述自己远见的工作;工作环境需要有灵活的架构,在自己激情高昂时可以从事各种项目;能发挥个人的独创性。","人力资源开发专业人员、社会科学工作者、团队建设顾问、编辑、艺术指导、记者、口笔译人员、娱乐业人士、建筑师、研究工作者、顾问、心理学专家。"],
  17. ["内向、直觉、思考、认知型这类人善于解决抽象问题。他们经纶满腹,时能闪现出创造的睿智火花。他们外表恬静,内心专注,总忙于分析问题。他们目光挑剔,独立性极高。对于这类人,事业满意源自这样的工作:能酝酿新观念;专心负责某一创造性流程,而不是最终产品。在解决复杂问题时,能让他们跳出常规的框框,冒一定风险去寻求最佳解决方案。","电脑软件设计师、系统分析人员、研究开发专业人员、战略规划师、金融规划师、信息服务开发商、变革管理顾问、企业金融律师。"],
  18. ["外向、感知、思考、认知型这类人无忧无虑,属乐天派。他们活泼、随和、率性,喜欢安于现状,不愿从长计议。由于他们能够接受现实,一般心胸豁达、包容心强。这种人喜欢玩实实在在的东西,善于拆装。对这种人来说,事业满意度来自这种工作:能随意与许多人交流;工作中充满冒险和乐趣,能冒险和随时抓住新的机遇;工作中当自己觉得必要时希望自我组织,而不是听从别人的安排。","企业家、业务运作顾问、个人理财专家、证券经纪人、银行职员、预算分析者、技术培训人员、综合网络专业人士、旅游代理、促销商、手工艺人、新闻记者、土木/工业/机械工程师。"],
  19. ["外向、感知、感觉、认知型ESFP这一类人生性爱玩、充满活力,用自己的陶醉来为别人增添乐趣。他们适应性强,平易随和,可以热情饱满地同时参加几项活动。他们不喜欢把自己的意志强加于人。对于这类人来说,适合的工作是,能在实践中学习,利用常识搜集各种事实来寻找问题的解决方案;他们喜欢直接与顾客和客户打交道;能同时在几个项目或活动中周旋。尤其爱从事能发挥自己审美观的项目或活动。","公关专业人士、劳工关系调解人、零售经理、商品规划师、团队培训人员、旅游项目经营者、表演人员、特别事件的协调人、社会工作者、旅游销售经理、融资者、保险代理/经纪人。"],
  20. ["外向、直觉、感觉、认知型ENFP这类人热情奔放,满脑子新观念。他们乐观、率性、充满自信和创造性,能深刻认识到哪些事可为。他们对灵感推崇备至,是天生的发明家。他们不墨守成规,善于闯新路子。ENFP这类人适合的工作是,在创造性灵感的推动下,与不同的人群合作从事各种项目;他们不喜欢从事需要自己亲自处理日常琐碎杂务的工作,喜欢按自己的工作节奏行事。","人力资源经理、变革管理顾问、营销经理、企业/团队培训人员、广告客户经理、战略规划人员、宣传人员、事业发展顾问、环保律师、研究助理、广告撰稿员、播音员、开发总裁。"],
  21. ["外向、直觉、思考、认知型这种人好激动、健谈、聪明、是个多面手。他们总是孜孜以求地提高自己的能力。这种人天生有创业心、爱钻研、机敏善变、适应能力强。令这类人满意的工作是:有机会从事创造性解决问题的工作。工作有一定的逻辑顺序和公正的标准。希望通过工作能提高个人能力并常与权力人物交流。","人事系统开发人员、投资经纪人、工业设计经理、后勤顾问、金融规划师、投资银行业职员、营销策划人员、广告创意指导、国际营销商。"],
  22. ["外向、感知、思考、判断型这种人办事能力强,喜欢出风头,办事风风火火。他们责任心强、诚心诚意、忠于职守。他们喜欢框架,能组织各种细节工作,能如期实现目标并力求高效。ESTJ类型的人适合做理顺事实和政策以及人员组织工作,能够有效利用时间和资源以找出合乎逻辑的解决方案,在目标明确的工作中姝运用娴熟的技能。他们希望工作测评标准公正。","银行官员、项目经理、数据库经理、信息总监、后勤与供应经理、业务运作顾问、证券经纪人、电脑分析人员、保险代理、普通承包商、工厂主管。"],
  23. ["外向、感知、感觉、判断型ESFJ类型的人喜欢通过直接合作以切实帮助别人。由于他们尤其注重人际关系,因而通常很受人欢迎,也喜欢迎合别人。他们的态度认真、遇事果断、通常表达意见坚决。这类人最满意的事业是,整天与人交往,密切参与整个决策流程。工作的目标明确,有明确的业绩标准。他们希望能组织安排自己及周围人的工作,以确保一切进展得尽可能顺利。","公关客户经理、个人银行业务员、销售代表、人力资源顾问、零售业主、餐饮业者、房地产经纪人、营销经理、电话营销员、办公室经理、接待员、信贷顾问、簿记员、口笔译人员。"],
  24. ["外向、直觉、感觉、判断型这种人有爱心,对生活充满热情。他们往往对自己很挑剔。不过,由于他们自认为要为别人的感受负责,所以很少在公众场合发表批评意见。他们对行为的是非曲直明察秋毫,是社交高手。这种人最适合的工作是,工作中能建立温磬的人际关系,能使自己置身于自己信赖、且富有创意的人群中工作。他们希望工作多姿多采,但又能有条不紊地干。","人力资源开发培训人员、销售经理、小企业经理、程序设计员、生态旅游业专家、广告客户经理、公关专业人士、协调人、交流总裁、作家/记者、非营利机构总裁。"],
  25. ["外向、直觉、思考、判断型这种人是极为有力的领导人和决策者,能明察一切事物中的各种可能性,喜欢发号施令。他们是天才的思想家,做事深谋远虑、策划周全。这种人事事力求做好,生就一双锐眼,能够一针见血地发现问题并迅速找到改进方法。最令ENTJ这类人满意的事业是,做领导、发号施令,完善企业的运作系统,使系统高效运行并如期达到目标。他们喜欢从事长远战略规划,寻求创造性的解决问题的方式。","(人事、销售、营销)经理、技术培训人员、(后勤、电脑信息服务和组织重建)顾问、国际销售经理、特许经营业主、程序设计员、环保工程师。"],
  26. ],
  27. option1: {
  28. S: [ "喜欢与人交往、不断结交新的朋友、善言谈、愿意教导别人。关心社会问题、渴望发挥自己的社会作用。寻求广泛的人际关系,比较看重社会义务和社会道德典型职业:喜欢要求与人打交道的工作,能够不断结交新的朋友,从事提供信息、启迪、帮助、培训、开发或治疗等事务,并具备相应能力。", "喜欢社会交往性工作,如教师、教育行政人员、社会学家、社会工作者、咨询顾问、护士等。这类人通常喜欢周围有别人存在,对别人的事很有兴趣,乐于帮助别人解决难题。这种人喜欢与人而不是事务打交道的工作。他们助人为乐、有责任心、热情、善于合作、富于理想、友好、善良、慷慨、耐心。","社会型"],
  29. E: [ "追求权力、权威和物质财富,具有领导才能。喜欢竞争、敢冒风险、有野心、抱负。为人务实,习惯以利益得失,权利、地位、金钱等来衡量做事的价值,做事有较强的目的性。典型职业:喜欢要求具备经营、管理、劝服、监督和领导才能,以实现机构、政治、社会及经济目标的工作,并具备相应的能力。", "喜欢诸如推销、服务、管理、企事业领导、经理、商业主任、销售员和人寿保险员等。这类人通常具有领导才能和口才,对金钱和权利感兴趣,喜欢影响、控制别人。这种人喜欢同人和观念而不是事务打交道的工作。他们爱户外交际、冒险、精力充沛、乐观、和蔼、细心、抱负心强。","企业型"],
  30. C: [ "尊重权威和规章制度,喜欢按计划办事,细心、有条理,习惯接受他人的指挥和领导,自己不谋求领导职务。喜欢关注实际和细节情况,通常较为谨慎和保守,缺乏创造性不喜欢冒险和竞争,富有自我牺牲精神。典型职业:喜欢要求注意细节、精确度、有系统有条理,具有记录、归档、据特定要求或程序组织数据和文字信息的职业,并具备相应能力。", "喜欢传统性的工作,如:记账、秘书、办事员,以及测算办公室人员、接待员、文件档案管理员、秘书、打字员、会计、出纳员等工作。这种人有很好的数字和计算能力,喜欢室内工作,乐于整理、安排事务。他们往往喜欢同文字、数字打交道的工作,比较顺从、务实、细心、节俭、做事利索、很有条理性、有耐性。","常规型"],
  31. R: [ "愿意使用工具从事操作性工作,动手能力强,做事手脚灵活,动作协调。偏好于具体任务,不善言辞,做事保守,较为谦虚。缺乏社交能力,通常喜欢独立做事。典型职业:喜欢使用工具、机器,需要基本操作技能的工作。对要求具备机械方面才能、体力或从事与物件、机器、工具、运动器材、植物、动物相关的职业有兴趣,并具备相应能力。", "喜欢现实性的实在的工作,如机械维修、木匠活、烹饪、电气技术、管子工、电工、机械工、摄影师、制图员等,也称“体能取向”、“机械取向”。这类人通常具有机械技能和体力,喜欢户外工作,乐于使用各种工具和机器设备。这种人喜欢同事务而不是人打交道的工作。他们真诚、谦逊、敏感、务实、朴素、节俭、腼腆。","实际型"],
  32. I: [ "思想家而非实干家,抽象思维能力强,求知欲强,肯动脑,善思考,不愿动手喜欢独立的和富有创造性的工作。知识渊博,有学识才能,不善于领导他人。考虑问题理性.做事喜欢精确,喜欢逻辑分析和推理,不断探讨未知的领域。", "喜欢各种研究型工作,如:实验室研究员、医师、产品检验员、数学、物理学、化学、生物学等自然科学研究者、图书馆技师、计算机程序编制者和电子技术工作者等等。这类人通常具有较高的数学和科研能力,喜欢独立工作,喜欢解决问题:喜欢同观念而不是人或事务打交道。他们逻辑性强、好奇、聪明、仔细、独立、安详、俭朴。","调研型"],
  33. A: [ "有创造力,乐于创造新颖、与众不同的成果,渴望表现自己的个性,实现自身的价值。做事理想化,追求完美,不重实际。具有一定的艺术才能和个性。善于表达、怀旧、心态较为复杂。", "喜欢的工作要求具备艺术修养、创造力、表达能力和直觉,并将其用于语言、行为、声音、颜色和形式的审美、思索和感受,具备相应的能力。不善于事务性工作。如艺术方面(演员、导演、艺术设计师、雕刻家、建筑师、摄影家、广告制作人),音乐方面(歌唱家、作曲家、乐队指挥),文学方面 (小说家、诗人、剧作家)。这种取向类型的人往往具有某些艺术上的技能,喜欢创造性的工作,富于想象力。这类人通常喜欢同观念而不是事务打交道的工作。他们较开放、好想象、独立、有创造性。","艺术型"],
  34. },
  35. index:-1,
  36. view: ""
  37. },
  38. career(re) {
  39. wx.navigateTo({
  40. url: '/pages/career/career',
  41. })
  42. },
  43. career70(re) {
  44. wx.navigateTo({
  45. url: '/pages/career70/career70',
  46. })
  47. },
  48. Holland(re) {
  49. wx.navigateTo({
  50. url: '/pages/Holland/Holland',
  51. })
  52. },
  53. /**
  54. * 生命周期函数--监听页面加载
  55. */
  56. onLoad(options) {
  57. },
  58. /**
  59. * 生命周期函数--监听页面初次渲染完成
  60. */
  61. onReady() {
  62. },
  63. /**
  64. * 生命周期函数--监听页面显示
  65. */
  66. onShow() {
  67. },
  68. /**
  69. * 生命周期函数--监听页面隐藏
  70. */
  71. onHide() {
  72. },
  73. /**
  74. * 生命周期函数--监听页面卸载
  75. */
  76. onUnload() {
  77. },
  78. /**
  79. * 页面相关事件处理函数--监听用户下拉动作
  80. */
  81. onPullDownRefresh() {
  82. },
  83. /**
  84. * 页面上拉触底事件的处理函数
  85. */
  86. onReachBottom() {
  87. },
  88. /**
  89. * 用户点击右上角分享
  90. */
  91. onShareAppMessage() {
  92. }
  93. })

1.4  second.json

  1. {
  2. "usingComponents": {}
  3. }

2  测试题界面代码(MBTI 28题版本)

2.1  career.wxml

  1. <!--pages/career/career.wxml-->
  2. <!-- 跑马灯 -->
  3. <view class="box flex-row">
  4. <text class="title">温馨提示:请在心态平和的情况下开始答题,每题考虑时间不宜超过10秒钟,选项之间无对错好坏之分,请选择与你实际做法相符的,而不是你认为怎样做是对的!</text>
  5. </view>
  6. <form class="section section_gap" bindsubmit="onSubmit">
  7. <!-- 第一部分 -->
  8. <view class="group1">
  9. <block wx:for="{{7}}" wx:key="index">
  10. <view class="section__title num{{index}}">
  11. <text>{{option.title[index]}}</text>
  12. </view>
  13. <view class="two">
  14. <radio-group name="radio-group" bindchange="onRadioChange" data-index="{{index}}">
  15. <view class="first">
  16. <radio value="radio1"/>
  17. <text>{{option.toptext[index]}}</text>
  18. </view>
  19. <view class="first">
  20. <radio value="radio2"/>
  21. <text>{{option.bottext[index]}}</text>
  22. </view>
  23. </radio-group>
  24. </view>
  25. </block>
  26. </view>
  27. <!-- 分割线 -->
  28. <view class="fgx"></view>
  29. <!-- 第二部分 -->
  30. <view class="group2">
  31. <block wx:for="{{7}}" wx:key="index">
  32. <view class="section__title num{{7+index}}">
  33. <text>{{option.title2[index]}}</text>
  34. </view>
  35. <view class="two">
  36. <radio-group name="radio-group" bindchange="onRadioChange" data-index="{{7+index}}">
  37. <view class="first">
  38. <radio value="radio1"/>
  39. <text>{{option.toptext2[index]}}</text>
  40. </view>
  41. <view class="first">
  42. <radio value="radio2"/>
  43. <text>{{option.bottext2[index]}}</text>
  44. </view>
  45. </radio-group>
  46. </view>
  47. </block>
  48. </view>
  49. <!-- 分割线 -->
  50. <view class="fgx"></view>
  51. <!-- 第三部分 -->
  52. <view class="group3">
  53. <block wx:for="{{7}}" wx:key="index">
  54. <view class="section__title num{{14+index}}">
  55. <text>{{option.title3[index]}}</text>
  56. </view>
  57. <view class="two">
  58. <radio-group name="radio-group" bindchange="onRadioChange" data-index="{{14+index}}">
  59. <view class="first">
  60. <radio value="radio1"/>
  61. <text>{{option.toptext3[index]}}</text>
  62. </view>
  63. <view class="first">
  64. <radio value="radio2"/>
  65. <text>{{option.bottext3[index]}}</text>
  66. </view>
  67. </radio-group>
  68. </view>
  69. </block>
  70. </view>
  71. <!-- 分割线 -->
  72. <view class="fgx"></view>
  73. <!-- 第四部分 -->
  74. <view class="group4">
  75. <block wx:for="{{7}}" wx:key="index">
  76. <view class="section__title num{{21+index}}">
  77. <text>{{option.title4[index]}}</text>
  78. </view>
  79. <view class="two">
  80. <radio-group name="radio-group" bindchange="onRadioChange" data-index="{{21+index}}">
  81. <view class="first">
  82. <radio value="radio1"/>
  83. <text>{{option.toptext4[index]}}</text>
  84. </view>
  85. <view class="first">
  86. <radio value="radio2"/>
  87. <text>{{option.bottext4[index]}}</text>
  88. </view>
  89. </radio-group>
  90. </view>
  91. </block>
  92. </view>
  93. <!-- 分割线 -->
  94. <view class="fgx"></view>
  95. <!-- 按钮 -->
  96. <view class="btn">
  97. <!-- bindtap 事件是在手指触摸屏幕后立即触发,响应速度更快,适用于交互频繁的场景。-->
  98. <!-- bindclick 事件是在手指触摸屏幕后、手指离开屏幕后 300ms 内触发,响应速度较慢,适用于一些需要判断手势的场景。-->
  99. <button class="btn1" formType="submit">提交</button>
  100. <button class="btn2" formType="reset" bindtap="MoveToTop">重做</button>
  101. </view>
  102. </form>

2.2  career.wxss

  1. /* pages/career/career.wxss */
  2. /* 跑马灯 */
  3. .box {
  4. width: 750rpx;
  5. margin: 10rpx auto;
  6. background: #f5eeec;
  7. border-radius: 5px;
  8. padding: 5px;
  9. box-sizing: border-box;
  10. }
  11. .title {
  12. white-space: nowrap;
  13. animation: 25s loop linear infinite normal;
  14. display: inline-block;
  15. vertical-align: top;
  16. font-size: 26rpx;
  17. color: #f0865e;
  18. opacity: 0.8;
  19. }
  20. @keyframes loop {
  21. 0% {
  22. transform: translateX(350px);
  23. -webkit-transform: translateX(350px);
  24. }
  25. 100% {
  26. transform: translateX(-100%);
  27. -webkit-transform: translateX(-100%);
  28. }
  29. }
  30. @-webkit-keyframes loop {
  31. 0% {
  32. transform: translateX(300px);
  33. -webkit-transform: translateX(300px);
  34. }
  35. 100% {
  36. transform: translateX(-100%);
  37. -webkit-transform: translateX(-100%);
  38. }
  39. }
  40. /* 选择题 */
  41. .section {
  42. background-color: rgb(255, 247, 240);
  43. border-radius: 5px;
  44. width: 710rpx;
  45. margin: 10rpx auto;
  46. }
  47. .section .group1, .group2, .group3, .group4 {
  48. /* border: deepskyblue solid 1px; */
  49. width: 660rpx;
  50. margin: 10rpx auto;
  51. padding-top: 10px;
  52. }
  53. .section__title {
  54. /* border: rgb(0, 255, 34) solid 1px; */
  55. margin-top: 10px;
  56. }
  57. .two {
  58. /* border: rgb(255, 0, 221) solid 1px; */
  59. margin-top: 10px;
  60. margin-bottom: 20px;
  61. }
  62. radio-group {
  63. margin-left: 10rpx;
  64. }
  65. radio {
  66. transform: scale(0.7);
  67. }
  68. text {
  69. font-size: 11pt;
  70. color: #666666;
  71. }
  72. .section__title text {
  73. color: #f0865e;
  74. font-size: 16px;
  75. font-weight: bold;
  76. }
  77. .two .first {
  78. margin: 10px 0;
  79. }
  80. /* 分割线 */
  81. .fgx {
  82. border: rgb(224, 224, 224) solid;
  83. margin-top: 15px;
  84. }
  85. /* 按钮 */
  86. .btn {
  87. border: rgb(255, 255, 255) solid 1px;
  88. background-color: white;
  89. display: flex;
  90. align-items: center;
  91. }
  92. .btn button {
  93. /* border: tomato solid 1px; */
  94. background-color: limegreen;
  95. color: rgb(255, 255, 255);
  96. margin-top: 20px;
  97. margin-bottom: 30px;
  98. }
  99. .btn .btn1 {
  100. margin-right: 10px;
  101. }
  102. .btn .btn2 {
  103. background-color: tomato;
  104. margin-left: 20px;
  105. }

2.3  career.js

  1. // pages/career/career.js
  2. Page({
  3. /**
  4. * 页面的初始数据
  5. */
  6. data: {
  7. option: {
  8. title: ["1.你倾向从何处得到力量:", "2.当你参加一个社交聚会时,你会:", "3.下列哪一件事听起来比较吸引你?", "4.在约会中,你通常:", "5.过去,你遇见你大部分的异性朋友是:", "6.你倾向拥有:", "7.过去,你的朋友和同事倾向对你说:"],
  9. toptext: ["别人", "在夜色很深时,一旦你开始投入,也许就是最晚离开的那一个", "与情人到有很多人且社交活动频繁的地方", "整体来说很健谈", "在宴会中、夜总会、工作上、休闲活动中、会议上或当朋友介绍我给他们的朋友时", "很多认识的人和很亲密的朋友", "你难道不可以安静一会儿吗?"],
  10. bottext: ["自己的想法", "在夜晚刚开始的时候,我就疲倦了并且想回家", "待在家中与情人做一些特别的事情,例如说观赏一部有趣的录影带并享用你最喜欢的外卖食物", "较安静并保留,直到你觉得舒服", "通过私人的方式,例如个人广告、录影约会,或是由亲密的朋友和家人介绍", "一些很亲密的朋友和一些认识的人", "可以请你从你的世界中出来一下吗"],
  11. title2: ["8.你倾向通过以下哪种方式收集信息:", "9.你倾向相信:", "10.当你置身于一段关系中时,你倾向相信:", "11.当你对一个约会觉得放心时,你偏向谈论:", "12.你是这种人:", "13.你是这类型的人:", "14.你通常:"],
  12. toptext2: ["你对有可能发生之事的想像和期望", "你的直觉", "永远有进步的空间", "未来,关于改进或发明事物和生活的种种可能性。例如,你也许会谈论一个新的科学发明,或一个更好的方法来表达你的感受", "喜欢先纵观全局", "与其活在现实中,不如活在想像里", "偏向于去想像一大堆关于即将来临的约会的事情"],
  13. bottext2: ["你对目前状况的实际认知", "你直接的观察和现成的经验", "若它没有被破坏,不予修补", "实际的、具体的、关于“此时此地”的事物。例如,你也许会谈论品酒的好方法,或你即将要参加的新奇旅程", "喜欢先掌握细节", "与其活在想像里,不如活在现实中", "偏向于拘谨地想像即将来临的约会,只期待让它自然地发生"],
  14. title3: ["15.你倾向如此做决定:", "16.你倾向比较能够察觉到:", "17.当和某人分手时:", "18.当与一个人交往时,你倾向于看重:", "19.当你不同意情人的想法时:", "20.认识你的人倾向形容你为:", "21.你把大部分和别人的相遇视为:"],
  15. toptext3: ["首先依你的心意,然后依你的逻辑", "当人们需要情感上的支持时", "你通常让自己的情绪深陷其中,很难抽身出来", "情感上的相容性:表达爱意和对另一半的需求很敏感", "你尽可能地避免伤害对方的感情;若是会对对方造成伤害的话,你就不会说", "热情和敏感", "友善及重要的"],
  16. bottext3: ["首先依你的逻辑,然后依你的心意", "当人们不合逻辑时", "虽然你觉得受伤,但一旦下定决心,你会直截了当地将过去恋人的影子甩开", "智慧上的相容性:沟通重要的想法;客观地讨论和辩论事情", "你通常毫无保留地说话,并且对情人直言不讳,因为对的就是对的", "逻辑和明确", "另有目的"],
  17. title4: ["22.若你有时间和金钱,你的朋友邀请你到国外度假,并且在前一天才通知,你会:", "23.在第一次约会中:", "24.你偏好:", "25.你选择的生活充满着:", "26.哪一项较常见:", "27.你是这种喜欢……的人:", "28.你是此类型的人:"],
  18. toptext4: ["必须先检查你的时间表", "若你所约的人来迟了,你会很不高兴", "事先知道约会的行程:要去哪里、有谁参加、你会在那里多久、该如何打扮", "日程表和组织", "你准时出席而其他人都迟到", "下定决心并且做出最后肯定的结论", "喜欢在一段时间里专心于一件事情直到完成"],
  19. bottext4: ["立刻收拾行装", "一点儿都不在乎,因为你自己常常迟到", "让约会自然地发生,不做太多事先的计划", "自然发生和弹性", "其他人都准时出席而你迟到", "放宽你的选择面并且持续收集信息", "享受同时进行好几件事情"],
  20. choices: [null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null]
  21. }
  22. },
  23. onRadioChange: function (e) {
  24. let index = e.currentTarget.dataset.index;
  25. let value = e.detail.value;
  26. let choices = this.data.option.choices;
  27. choices[index] = value;
  28. // console.log(choices);
  29. this.setData({
  30. 'option.choices': choices
  31. })
  32. },
  33. onSubmit: function (e) {
  34. let choices = this.data.option.choices;
  35. for (let i = 0; i < choices.length; i++) {
  36. if (choices[i] === null) {
  37. // 如果有未做完题目,使用 `wx.pageScrollTo` 方法滚动页面到未做完题目所在的位置
  38. wx.showToast({
  39. title: '请完成所有题目',
  40. icon: 'none',
  41. duration: 2000
  42. })
  43. let jump = ".num" + i;
  44. wx.pageScrollTo({
  45. selector: jump,
  46. duration: 300,
  47. /*success: data => {
  48. console.log('scroll success', data);
  49. },
  50. fail: data => {
  51. console.log('scroll fail', data);
  52. },
  53. complete: data => {
  54. console.log('scroll complete', data);
  55. }*/
  56. })
  57. return;
  58. }
  59. }
  60. /* function CountAnswer */
  61. {
  62. let E = 0, I = 0, N = 0, S = 0, F = 0, T = 0, J = 0, P = 0;
  63. let choices = this.data.option.choices;
  64. let testResult;
  65. for (let i = 0; i < choices.length; i++) {
  66. if (i < 7) {
  67. if (choices[i] == "radio1")
  68. E++;
  69. else
  70. I++;
  71. continue;
  72. }
  73. if (i < 14) {
  74. if (choices[i] == "radio1")
  75. N++;
  76. else
  77. S++;
  78. continue;
  79. }
  80. if (i < 21) {
  81. if (choices[i] == "radio1")
  82. F++;
  83. else
  84. T++;
  85. continue;
  86. }
  87. if (i < 28) {
  88. if (choices[i] == "radio1")
  89. J++;
  90. else
  91. P++;
  92. }
  93. }
  94. if (E > I)
  95. testResult = "E";
  96. else
  97. testResult = "I";
  98. if (N > S)
  99. testResult += "N";
  100. else
  101. testResult += "S";
  102. if (F > T)
  103. testResult += "F";
  104. else
  105. testResult += "T";
  106. if (J > P)
  107. testResult += "J";
  108. else
  109. testResult += "P";
  110. console.log(testResult);
  111. getApp().globalData.testResult = testResult // 保存到全局
  112. wx.navigateTo({
  113. url: '/pages/TestResult/TestResult',
  114. })
  115. }
  116. },
  117. MoveToTop: function () {
  118. wx.showToast({
  119. title: '重置成功',
  120. icon: 'none',
  121. duration: 2000
  122. })
  123. // 先显示提示后滚动
  124. wx.pageScrollTo({
  125. scrollTop: 0, // 回到顶端
  126. duration: 300
  127. })
  128. },
  129. /**
  130. * 生命周期函数--监听页面加载
  131. */
  132. onLoad(options) {
  133. },
  134. /**
  135. * 生命周期函数--监听页面初次渲染完成
  136. */
  137. onReady() {
  138. },
  139. /**
  140. * 生命周期函数--监听页面显示
  141. */
  142. onShow() {
  143. },
  144. /**
  145. * 生命周期函数--监听页面隐藏
  146. */
  147. onHide() {
  148. },
  149. /**
  150. * 生命周期函数--监听页面卸载
  151. */
  152. onUnload() {
  153. },
  154. /**
  155. * 页面相关事件处理函数--监听用户下拉动作
  156. */
  157. onPullDownRefresh() {
  158. },
  159. /**
  160. * 页面上拉触底事件的处理函数
  161. */
  162. onReachBottom() {
  163. },
  164. /**
  165. * 用户点击右上角分享
  166. */
  167. onShareAppMessage() {
  168. }
  169. })

2.4  career.json

  1. {
  2. "usingComponents": {}
  3. }
目录结构如图:

霍兰德职业兴趣测试

程序截图:

小程序中霍兰德测试提供90题的标准版(ps:网上有多种版本,此为笔者选择整理的一种)

最终结果会给出测试者六种类型的得分排序,排序的前三种类型都是测试者可以参考的。

依据评分方法,结果共六种类型,每种类型对应15题,题目为判断题,选择√则相应类型得一分,选择x不得分,六种类型累加积分并比较,结果显示排序。

3 测试题界面代码(霍兰德 90题版本)

3.1  Holland.wxml

  1. <!--pages/Holland/Holland.wxml-->
  2. <!-- 跑马灯 -->
  3. <view class="box flex-row">
  4. <text class="title">温馨提示:请在心态平和的情况下开始答题,每题考虑时间不宜超过10秒钟,选项之间无对错好坏之分,请选择与你实际做法相符的,而不是你认为怎样做是对的!</text>
  5. </view>
  6. <form class="section section_gap" bindsubmit="onSubmit">
  7. <!-- 第一部分 -->
  8. <view class="group1">
  9. <block wx:for="{{15}}" wx:key="index">
  10. <view class="section__title num{{index}}">
  11. <text>{{option.title[index]}}</text>
  12. </view>
  13. <view class="two">
  14. <radio-group name="radio-group" bindchange="onRadioChange" data-index="{{index}}">
  15. <view class="first">
  16. <radio value="radio1"/>
  17. <text></text>
  18. <radio value="radio2"/>
  19. <text>×</text>
  20. </view>
  21. </radio-group>
  22. </view>
  23. </block>
  24. </view>
  25. <!-- 分割线 -->
  26. <view class="fgx"></view>
  27. <!-- 第二部分 -->
  28. <view class="group2">
  29. <block wx:for="{{15}}" wx:key="index">
  30. <view class="section__title num{{15+index}}">
  31. <text>{{option.title2[index]}}</text>
  32. </view>
  33. <view class="two">
  34. <radio-group name="radio-group" bindchange="onRadioChange" data-index="{{15+index}}">
  35. <view class="first">
  36. <radio value="radio1"/>
  37. <text></text>
  38. <radio value="radio2"/>
  39. <text>×</text>
  40. </view>
  41. </radio-group>
  42. </view>
  43. </block>
  44. </view>
  45. <!-- 分割线 -->
  46. <view class="fgx"></view>
  47. <!-- 第三部分 -->
  48. <view class="group3">
  49. <block wx:for="{{15}}" wx:key="index">
  50. <view class="section__title num{{30+index}}">
  51. <text>{{option.title3[index]}}</text>
  52. </view>
  53. <view class="two">
  54. <radio-group name="radio-group" bindchange="onRadioChange" data-index="{{30+index}}">
  55. <view class="first">
  56. <radio value="radio1"/>
  57. <text></text>
  58. <radio value="radio2"/>
  59. <text>×</text>
  60. </view>
  61. </radio-group>
  62. </view>
  63. </block>
  64. </view>
  65. <!-- 分割线 -->
  66. <view class="fgx"></view>
  67. <!-- 第四部分 -->
  68. <view class="group4">
  69. <block wx:for="{{15}}" wx:key="index">
  70. <view class="section__title num{{45+index}}">
  71. <text>{{option.title4[index]}}</text>
  72. </view>
  73. <view class="two">
  74. <radio-group name="radio-group" bindchange="onRadioChange" data-index="{{45+index}}">
  75. <view class="first">
  76. <radio value="radio1"/>
  77. <text></text>
  78. <radio value="radio2"/>
  79. <text>×</text>
  80. </view>
  81. </radio-group>
  82. </view>
  83. </block>
  84. </view>
  85. <!-- 分割线 -->
  86. <view class="fgx"></view>
  87. <!-- 第五部分 -->
  88. <view class="group1">
  89. <block wx:for="{{15}}" wx:key="index">
  90. <view class="section__title num{{60+index}}">
  91. <text>{{option.title5[index]}}</text>
  92. </view>
  93. <view class="two">
  94. <radio-group name="radio-group" bindchange="onRadioChange" data-index="{{60+index}}">
  95. <view class="first">
  96. <radio value="radio1"/>
  97. <text></text>
  98. <radio value="radio2"/>
  99. <text>×</text>
  100. </view>
  101. </radio-group>
  102. </view>
  103. </block>
  104. </view>
  105. <!-- 分割线 -->
  106. <view class="fgx"></view>
  107. <!-- 第六部分 -->
  108. <view class="group1">
  109. <block wx:for="{{15}}" wx:key="index">
  110. <view class="section__title num{{75+index}}">
  111. <text>{{option.title6[index]}}</text>
  112. </view>
  113. <view class="two">
  114. <radio-group name="radio-group" bindchange="onRadioChange" data-index="{{75+index}}">
  115. <view class="first">
  116. <radio value="radio1"/>
  117. <text></text>
  118. <radio value="radio2"/>
  119. <text>×</text>
  120. </view>
  121. </radio-group>
  122. </view>
  123. </block>
  124. </view>
  125. <!-- 分割线 -->
  126. <view class="fgx"></view>
  127. <!-- 按钮 -->
  128. <view class="btn">
  129. <!-- bindtap 事件是在手指触摸屏幕后立即触发,响应速度更快,适用于交互频繁的场景。-->
  130. <!-- bindclick 事件是在手指触摸屏幕后、手指离开屏幕后 300ms 内触发,响应速度较慢,适用于一些需要判断手势的场景。-->
  131. <button class="btn1" formType="submit">提交</button>
  132. <button class="btn2" formType="reset" bindtap="MoveToTop">重做</button>
  133. </view>
  134. </form>

3.2  Holland.wxss

  1. /* pages/Holland/Holland.wxss */
  2. .box {
  3. width: 710rpx;
  4. margin: 10rpx auto;
  5. background: #f5eeec;
  6. border-radius: 5px;
  7. padding: 5px;
  8. box-sizing: border-box;
  9. }
  10. .title {
  11. white-space: nowrap;
  12. animation: 25s loop linear infinite normal;
  13. display: inline-block;
  14. vertical-align: top;
  15. font-size: 26rpx;
  16. color: #f0865e;
  17. opacity: 0.8;
  18. }
  19. @keyframes loop {
  20. 0% {
  21. transform: translateX(350px);
  22. -webkit-transform: translateX(350px);
  23. }
  24. 100% {
  25. transform: translateX(-100%);
  26. -webkit-transform: translateX(-100%);
  27. }
  28. }
  29. @-webkit-keyframes loop {
  30. 0% {
  31. transform: translateX(300px);
  32. -webkit-transform: translateX(300px);
  33. }
  34. 100% {
  35. transform: translateX(-100%);
  36. -webkit-transform: translateX(-100%);
  37. }
  38. }
  39. /* 选择题 */
  40. .section {
  41. background-color: rgb(255, 247, 240);
  42. border-radius: 5px;
  43. width: 710rpx;
  44. margin: 10rpx auto;
  45. }
  46. .section .group1, .group2, .group3, .group4 {
  47. /* border: deepskyblue solid 1px; */
  48. width: 660rpx;
  49. margin: 10rpx auto;
  50. padding-top: 10px;
  51. }
  52. .section__title {
  53. /* border: rgb(0, 255, 34) solid 1px; */
  54. margin-top: 10px;
  55. }
  56. .two {
  57. /* border: rgb(255, 0, 221) solid 1px; */
  58. margin-top: 10px;
  59. margin-bottom: 20px;
  60. }
  61. radio-group {
  62. margin-left: 10rpx;
  63. }
  64. radio {
  65. transform: scale(0.7);
  66. }
  67. text {
  68. font-size: 11pt;
  69. color: #666666;
  70. margin-right: 30px;
  71. }
  72. .section__title text {
  73. color: #f0865e;
  74. font-size: 16px;
  75. font-weight: bold;
  76. }
  77. .two .first {
  78. margin: 10px 0;
  79. }
  80. /* 分割线 */
  81. .fgx {
  82. border: rgb(224, 224, 224) solid;
  83. margin-top: 15px;
  84. }
  85. /* 按钮 */
  86. .btn {
  87. border: rgb(255, 255, 255) solid 1px;
  88. background-color: white;
  89. display: flex;
  90. align-items: center;
  91. }
  92. .btn button {
  93. /* border: tomato solid 1px; */
  94. background-color: limegreen;
  95. color: rgb(255, 255, 255);
  96. margin-top: 20px;
  97. margin-bottom: 30px;
  98. }
  99. .btn .btn1 {
  100. margin-right: 10px;
  101. }
  102. .btn .btn2 {
  103. background-color: tomato;
  104. margin-left: 20px;
  105. }

3.3  Holland.js

  1. // pages/Holland/Holland.js
  2. Page({
  3. /**
  4. * 页面的初始数据
  5. */
  6. data: {
  7. option: {
  8. title: ["1.强壮而敏捷的身体对我很重要。", "2.我擅长于自己制作、修理东西。", "3.我喜欢使用双手做事。", "4.我不在乎工作把手弄脏。", "5.我喜欢购买小零件,做成成品。", "6.我喜欢独立完成一项任务。", "7.我喜欢直言不讳,不喜欢转弯抹角。", "8.从事户外活动令我神清气爽。", "9.我喜欢周边环境简单而实际。", "10.我不害怕过重工作负荷,且知道工作的重点。", "11.我希望粗重的肢体工作不会伤害任何人。", "12.我选车时,最先注意的是好的引擎。", "13.我通常知道如何应付紧急事件。", "14.我用运动来保持强壮的身体。", "15.我喜欢把东西拆开,看看能否修理他们。"],
  9. title2: ["16.我必须彻底地了解事情的真相。", "17.我可以花很长的时间去想通事情的道理", "18.探索新构思使我满意。", "19.我认为教育是个发展及磨练脑力的终身学习过程。", "20.有时我长时间阅读,玩拼图游戏,冥想生命本质。", "21.我渴望阅读或思考任何可以引发我好奇心的东西。", "22.我在解决问题前,必须把问题进行彻底分析。", "23.我不断地问:为什么?", "24.我会不断地思索一个问题,直到找出答案为止。", "25.我喜欢能使我思考、给我新观念的书。", "26.我希望能学习所有使我感兴趣的科目。", "27.我喜欢能刺激我思考的话。", "28.阅读新发现的书事件令人兴奋的事情。", "29.我经常对大自然的奥秘感到好奇。", "30.我喜欢研读所有的事实,再有逻辑的做出决定。"],
  10. title3: ["31.我的心情受音乐、色彩和美丽事物的影响极大", "32.我重视美丽的环境。", "33.我是寻求新方法来发挥我的创造力。", "34.我喜欢非正式的穿着,尝试新颜色和款式。", "35.我有很强的想象力。", "36.我喜欢尝试创新的概念。", "37.我喜欢重新布置我的环境,使他们与众不同。", "38.我喜欢自己的工作能够抒发我的情绪和感觉。", "39.大自然的美深深地触动我的灵魂。", "40.我希望能看到艺术表演、戏剧及好的电影。", "41.我希望能做些与众不同的事。", "42.当我从事创造性的事时,我会忘掉一切旧经验。", "43.我喜欢美丽、不平凡的东西。", "44.尝试不平凡的新事物是件相当有趣的事情。", "45.没有美丽事物的生活,对我而言是不可思议的。"],
  11. title4: ["46.和他人的关系丰富了我的生命并使它有意义。", "47.我愿意花时间帮别人解决个人危机", "48.我认为能把自己的焦虑和别人分担是很重要的。", "49.我常能体会到某人想要和他人沟通的需要。", "50.我喜欢帮助别人发挥天赋和才能。", "51.如果我和别人摩擦,我会不断尝试化干戈为玉帛。", "52.我经常借着和别人交谈来解决自己的问题。", "53.我喜欢帮助别人找可以和他人相互关注的办法。", "54.亲密的人际关系对我很重要。", "55.我对别人的情绪低潮相当的敏感。", "56.我对别人的困难乐于伸出援手", "57.我对社会上有许多人需要帮助感到关注。", "58.我经常关心孤独、不友善的人。", "59.当别人像我诉说他的困难时,我是个好听众。", "60.人们经常告诉我他们的问题。"],
  12. title5: ["61.我自信会成功。", "62.我喜欢竞争。", "63.成为群体中的关键任务执行者,对我很重要。", "64.我喜欢帮助别人不断改进。", "65.我喜欢监督事情直至完工。", "66.要成功就必须定高目标。", "67.我常想起草一个计划,而由别人完成细节。", "68.能够参与重大决策是件令人兴奋的事情。", "69.升迁和进步对我极重要。", "70.能影响别人使我感到兴奋。", "71.我愿意冒一点险以求进步", "72.说服别人依计划行事是件有趣的事情。", "73.我喜欢讨价还价。", "74.做事失败了,我会再接再厉。", "75.我常能借着资讯网络和别人取得联系。"],
  13. title6: ["76.我做事必须有清楚的指引。", "77.我在开始一个计划前会花很多时间去计划。", "78.我对于自己能重视工作中的所有细节感到骄傲。", "79.我在决策时,通常不愿冒险。", "80.如果我面对一个新情景,会在事前做充分的准备。", "81.我喜欢为重大决策负责。", "82.准时对我来说非常重要。", "83.我经常保持清洁,喜欢有条不素。", "84.当我把每日工作计划好时,我会较有安全感。", "85.当我答应一件事时,我会竭尽监督所有细节。", "86.当我遵循成规时,我感到安全。", "87.我擅长于检查细节。", "88.我花钱时小心翼翼。", "89.我需要确切地知道别人对我的要求是什么。", "90.小心谨慎的完成一件事是件有成就感的事情。"],
  14. choices: [null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null]
  15. /* choices: ["radio2", "radio1", "radio2", "radio2", "radio1", "radio2", "radio2", "radio1", "radio2", "radio1", "radio2", "radio1", "radio2", "radio1", "radio2", "radio2", "radio2", "radio1", "radio2", "radio1", "radio2", "radio2", "radio1", "radio2", "radio2", "radio1", "radio2", "radio2", "radio1", "radio2", "radio2", "radio1", "radio1", "radio1", "radio1", "radio1", "radio2", "radio1", "radio2", "radio1", "radio2", "radio1", "radio2", "radio2", "radio1", "radio2", "radio2", "radio1", "radio2", "radio2", "radio1", "radio1", "radio1", "radio2", "radio1", "radio2", "radio1", "radio1", "radio2", "radio2", "radio1", "radio2", "radio2", "radio1", "radio2", "radio2", "radio1", "radio1", "radio2", "radio2", "radio1", "radio1", "radio2", "radio2", "radio1", "radio2", "radio1", "radio1", "radio1", "radio2", "radio2", "radio2", "radio1", "radio2", "radio1", "radio2", "radio1", "radio2", "radio2", "radio2"] */ // 测试数据
  16. }
  17. },
  18. onRadioChange: function (e) {
  19. let index = e.currentTarget.dataset.index;
  20. let value = e.detail.value;
  21. let choices = this.data.option.choices;
  22. choices[index] = value;
  23. // console.log(choices);
  24. this.setData({
  25. 'option.choices': choices
  26. })
  27. },
  28. onSubmit: function (e) {
  29. let choices = this.data.option.choices;
  30. for (let i = 0; i < choices.length; i++) {
  31. if (choices[i] === null) {
  32. // 如果有未做完题目,使用 `wx.pageScrollTo` 方法滚动页面到未做完题目所在的位置
  33. wx.showToast({
  34. title: '请完成所有题目', icon: 'none', duration: 2000
  35. })
  36. let jump = ".num" + i;
  37. wx.pageScrollTo({
  38. selector: jump, duration: 300,
  39. })
  40. return;
  41. }
  42. }
  43. console.log(choices);
  44. /* function CountAnswer */
  45. {
  46. let S = 0, E = 0, C = 0, R = 0, I = 0, A = 0;
  47. let choices = this.data.option.choices;
  48. for (let i = 0; i < choices.length; i++) {
  49. if (i < 15) {
  50. if (choices[i] == "radio1") S++;
  51. continue;
  52. }
  53. if (i < 30) {
  54. if (choices[i] == "radio1") E++;
  55. continue;
  56. }
  57. if (i < 45) {
  58. if (choices[i] == "radio1") C++;
  59. continue;
  60. }
  61. if (i < 60) {
  62. if (choices[i] == "radio1") R++;
  63. continue;
  64. }
  65. if (i < 75) {
  66. if (choices[i] == "radio1") I++;
  67. continue;
  68. }
  69. if (i < 90) {
  70. if (choices[i] == "radio1") A++;
  71. }
  72. }
  73. let arr = new Array(6);
  74. arr[0] = {index: 'S', num: S};
  75. arr[1] = {index: 'E', num: E};
  76. arr[2] = {index: 'C', num: C};
  77. arr[3] = {index: 'R', num: R};
  78. arr[4] = {index: 'I', num: I};
  79. arr[5] = {index: 'A', num: A};
  80. arr.sort(function (a, b) {
  81. return b.num - a.num; // 从大到小排序
  82. });
  83. console.log(arr);
  84. getApp().globalData.arr = arr // 保存到全局
  85. wx.navigateTo({
  86. url: '/pages/result/result',
  87. })
  88. }
  89. },
  90. MoveToTop: function () {
  91. wx.showToast({
  92. title: '重置成功', icon: 'none', duration: 2000
  93. })
  94. // 先显示提示后滚动
  95. wx.pageScrollTo({
  96. scrollTop: 0, // 回到顶端
  97. duration: 300
  98. })
  99. },
  100. /**
  101. * 生命周期函数--监听页面加载
  102. */
  103. onLoad(options) {
  104. },
  105. /**
  106. * 生命周期函数--监听页面初次渲染完成
  107. */
  108. onReady() {
  109. },
  110. /**
  111. * 生命周期函数--监听页面显示
  112. */
  113. onShow() {
  114. },
  115. /**
  116. * 生命周期函数--监听页面隐藏
  117. */
  118. onHide() {
  119. },
  120. /**
  121. * 生命周期函数--监听页面卸载
  122. */
  123. onUnload() {
  124. },
  125. /**
  126. * 页面相关事件处理函数--监听用户下拉动作
  127. */
  128. onPullDownRefresh() {
  129. },
  130. /**
  131. * 页面上拉触底事件的处理函数
  132. */
  133. onReachBottom() {
  134. },
  135. /**
  136. * 用户点击右上角分享
  137. */
  138. onShareAppMessage() {
  139. }
  140. })

3.4  Holland.json

  1. {
  2. "usingComponents": {}
  3. }

结语:

小程序的两种测试功能经测试与网络上已有的测试结果一致,基本能够满足基础测试的要求,可以作为参考。

此两种测试功能意在为开发的小程序添彩,觉得有意思故记录分享,任何意见欢迎评论交流,在此感谢曾为我解答一些疑惑提供帮助的同学。

如果您有需求,这里有整理的MBTI职业性格测试和霍兰德职业兴趣测试的测试题文件(含答案解释)以及测试相关的代码文件供参考,配置方面的问题也欢迎评论区留言。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/135419
推荐阅读
相关标签
  

闽ICP备14008679号