目录
代码复用的重要性
问题分析
解决方案:使用三元运算符简化代码
进一步优化
注意事项
总结
首页 web前端 html教程 JavaScript代码复用:避免重复编写问答网页逻辑

JavaScript代码复用:避免重复编写问答网页逻辑

Aug 17, 2025 pm 10:57 PM

JavaScript代码复用:避免重复编写问答网页逻辑

本文旨在解决在开发问答网页时,因主题增多而导致代码重复的问题。通过使用三元运算符,将原本针对不同主题(如生物、化学、物理)的相似代码逻辑进行整合,从而实现代码的复用,减少冗余,提高开发效率,并使代码更易于维护和扩展。

代码复用的重要性

在软件开发中,代码复用是一项至关重要的实践。它不仅可以减少开发时间,还能提高代码质量,降低维护成本。当面临相似但略有不同的任务时,避免简单地复制粘贴代码,而是应该寻找通用的解决方案,将重复的代码抽象成可复用的模块或函数。

问题分析

在提供的代码中,可以观察到,对于不同的主题(Biology, Chemistry, Physics),其处理逻辑基本相同:

  1. 根据用户选择的主题,确定使用哪个问题数组(biologyQ, chemistryQ, physicsQ)。
  2. 根据用户选择的课程,筛选出对应的问题。
  3. 将筛选后的问题数组进行随机排序。
  4. 将排序后的问题显示在页面上。
  5. 根据用户选择的数量,显示相应数量的问题。

唯一的区别在于,不同的主题对应不同的数组和课程选择器。因此,可以将这些差异抽象出来,使用更通用的方式来处理。

解决方案:使用三元运算符简化代码

三元运算符是一种简洁的条件判断方式,可以根据条件选择不同的值。我们可以利用三元运算符,将不同主题对应的数组和课程选择器进行动态选择。

以下是修改后的 JavaScript 代码:

$(document).ready(function(){
    $('.go-btn').on('click',function() {

        var topic = $('#myTopic').val();
        var array = (topic == 'Biology' ? biologyQ : (topic == 'Chemistry' ? chemistryQ : physicsQ));
        var lessonSelector = (topic == 'Biology' ? $('#myBiology') : (topic == 'Chemistry' ? $('#myChemistry') : $('#myPhysics')));
        const lessonSelected = lessonSelector.val();
        var lessonResult = $.grep(array, function(e){ return e.lesson == lessonSelected; });

        {
            const array = lessonResult;

            function shuffle(array) {
                for (let i = array.length - 1; i > 0; i--) {
                    let j = Math.floor(Math.random() * (i   1));
                    let temp = array[i];
                    array[i] = array[j];
                    array[j] = temp;
                }
                return array;
            };

            const result = shuffle(array);
            $('#q1').html(result[0].question);
            $('#q2').html(result[1].question);
            $('#q3').html(result[2].question);

            var currentVal = $('#myNumber').val();
            $('.selected').hide().slice(0, currentVal).show();
        }
    });
});

代码解释:

  • var topic = $('#myTopic').val();:获取用户选择的主题。
  • var array = (topic == 'Biology' ? biologyQ : (topic == 'Chemistry' ? chemistryQ : physicsQ));:根据用户选择的主题,动态选择对应的问题数组。如果主题是 'Biology',则使用 biologyQ,否则如果主题是 'Chemistry',则使用 chemistryQ,否则使用 physicsQ。
  • var lessonSelector = (topic == 'Biology' ? $('#myBiology') : (topic == 'Chemistry' ? $('#myChemistry') : $('#myPhysics')));:根据用户选择的主题,动态选择对应的课程选择器。
  • const lessonSelected = lessonSelector.val();: 获取用户选择的课程。

通过使用三元运算符,将原本需要重复编写的条件判断逻辑简化为一行代码,大大减少了代码量,提高了代码的可读性和可维护性。

进一步优化

除了使用三元运算符外,还可以考虑以下优化方案:

  • 将问题数据存储为统一格式: 可以将 biologyQ, chemistryQ, physicsQ 等数组合并为一个数组,并添加一个 topic 字段来区分不同的主题。这样可以进一步简化代码,并方便后续扩展。
  • 使用函数封装通用逻辑: 可以将筛选、排序和显示问题的逻辑封装成独立的函数,并在不同的主题中使用这些函数。
  • 使用模板引擎: 如果需要更灵活地控制问题的显示方式,可以考虑使用模板引擎,例如 Handlebars 或 Mustache。

注意事项

  • 在使用三元运算符时,要注意代码的可读性。如果条件过于复杂,可以考虑使用 if...else 语句来提高代码的可读性。
  • 在进行代码复用时,要确保复用的代码适用于不同的场景。如果不同的场景有较大的差异,可能需要对复用的代码进行修改或扩展.
  • 确保用户选择的主题和课程是有效的,可以添加错误处理机制,避免出现异常情况。

总结

通过使用三元运算符,我们可以有效地减少代码重复,提高开发效率,并使代码更易于维护和扩展。在实际开发中,应该积极寻找代码复用的机会,并选择合适的工具和技术来实现代码复用。最终目标是编写出高质量、可维护的代码。

以上是JavaScript代码复用:避免重复编写问答网页逻辑的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

热门话题

PHP教程
1585
276
初学者的基本HTML标签 初学者的基本HTML标签 Jul 27, 2025 am 03:45 AM

要快速入门HTML,只需掌握几个基础标签即可搭建网页骨架。1.页面结构必备、和,其中是根元素,包含元信息,是内容展示区域。2.标题使用到,级别越高数字越小,正文用标签分段,避免跳级使用。3.链接使用标签并配合href属性,图片使用标签并包含src和alt属性。4.列表分为无序列表和有序列表,每个条目用表示且必须嵌套在列表中。5.初学者不必强记所有标签,边写边查更高效,掌握结构、文本、链接、图片和列表即可制作基础网页。

输入标签中的名称属性是什么? 输入标签中的名称属性是什么? Jul 27, 2025 am 04:14 AM

thenAmeatTributeInAninputTagisusIfe to IndentifyTheInputWhentheFormisSubSted; iservesAsTheKeyInthekey-ValuePairsentTotheserver,wheretheuser'sinputisthevalue.1.whenaformented,

您可以在另一个标签中放置一个标签吗? 您可以在另一个标签中放置一个标签吗? Jul 27, 2025 am 04:15 AM

❌Youcannotnesttagsinsideanothertagbecauseit’sinvalidHTML;browsersautomaticallyclosethefirstbeforeopeningthenext,resultinginseparateparagraphs.✅Instead,useinlineelementslike,,orforstylingwithinaparagraph,orblockcontainerslikeortogroupmultipleparagraph

html'样式”标签:内联与内部CSS html'样式”标签:内联与内部CSS Jul 26, 2025 am 07:23 AM

样式放置方式需根据场景选择。1.Inline适合单元素临时修改或JS动态控制,如按钮颜色随操作变化;2.内部CSS适合页面少、结构简单项目,便于集中管理样式,如登录页基础样式设置;3.优先考虑复用性、维护性及性能,大项目拆分外链CSS文件更优。

如何在HTML中嵌入PDF文档? 如何在HTML中嵌入PDF文档? Aug 01, 2025 am 06:52 AM

使用标签是最简单且推荐的方法,语法为,适用于现代浏览器直接嵌入PDF;2.使用标签可提供更好的控制和备用内容支持,语法为,并在标签内提供下载链接作为不支持时的备用方案;3.可选通过GoogleDocsViewer嵌入,但因隐私和性能问题不建议广泛使用;4.为提升用户体验,应设置合适的高度、使用响应式尺寸(如height:80vh)并提供PDF下载链接,以便用户自行下载查看。

如何在HTML中创建一个无序的列表? 如何在HTML中创建一个无序的列表? Jul 30, 2025 am 04:50 AM

要创建HTML无序列表,需使用标签定义列表容器,每个列表项用标签包裹,浏览器会自动添加项目符号;1.使用标签创建列表;2.每个列表项用标签定义;3.浏览器自动生成默认圆点符号;4.可通过嵌套实现子列表;5.使用CSS的list-style-type属性可修改符号样式,如disc、circle、square或none;正确使用这些标签即可生成标准无序列表。

如何使用可满足的属性? 如何使用可满足的属性? Jul 28, 2025 am 02:24 AM

theconteDitiitableAttributeMakesyHtmLelementEdabledableddingContenteDibledable =“ true”,允许使用contostlymodifectlymodifycontentinthebrowser.2.itiscommonlysonlysedinrysedinrichedinrichtexteditors,note-placeedingingInterInterfaces,andIn-placeeditingInterfaces,supportingingingingingingingingingingingingingingingelementslementslementLikeDikeDivikeDiv

如何在html中的网站标题选项卡中添加图标 如何在html中的网站标题选项卡中添加图标 Aug 07, 2025 pm 11:30 PM

要为网站标题栏添加图标,需在HTML的部分链接一个favicon文件,具体步骤如下:1.准备一个16x16或32x32像素的图标文件,推荐使用favicon.ico命名并放置于网站根目录,或使用PNG、SVG等现代格式;2.在HTML的中添加链接标签,如,若使用PNG或SVG格式则相应调整type属性;3.可选地为移动设备添加高分辨率图标,如AppleTouchIcon,并通过sizes属性指定不同尺寸;4.遵循最佳实践,将图标置于根目录以确保自动检测,更新后清除浏览器缓存,检查文件路径正确性,

See all articles