用于突出显示功能的更高效的 JavaScript 代码?

2023-12-06

所以这是我需要清理的功能:

我需要创建一个功能,观众可以单击句子中的任何单词,它就会突出显示。然而,我需要做到一次只突出显示一个单词。例如,如果您单击单词“you”,然后您改变主意并单击单词“eagle”,则单词“you”将被取消选择。

它已经有现有的代码,但我们的工作期限非常紧迫,如果我们使用这个非常长、非常难以导航的代码进行编辑和调整,那么我们将用掉这么多宝贵的几周来生成一个 5分钟互动。

This is what it looks like:
http://bit.ly/PeKOxH

And this is a snippet of the JS (so you can glimpse the problem):
http://bit.ly/PeMY0l

(可根据要求提供 HTML 和 JS 代码)

因此,我没有考虑让自己经历这个漫长的地狱,而是​​想将每个句子传递给一个数组,这样每个单词就已经被分配了一个名字。这样我们就可以通过 for 循环调用每个数组,将其打印在页面上,并使用 arrayName[i] 调用单个单词进行突出显示。然后可能是一个 if-else 语句,这样只有选定的单词才会突出显示。

我一直在尝试通过数组推送实际的 HTML 元素,例如,只获取<p>对于每一个<div id="sentence1">或者其他什么,但它似乎不可能......如果是,请告诉我它是如何完成的,或者如果不是,我仍然会感激任何其他替代方案。

我一生都无法独自弄清楚所有的硬编码,因为我现在对 JavaScript 的了解只有这么多,但我非常非常愿意学习!任何有关这方面的帮助将不胜感激,因为我们的工作期限非常紧迫。

提前非常感谢!请提供任何帮助或建议!

EDIT

这是我们的代码checkAns()功能。它递增var correct当每次都突出显示正确答案时checkAns()运行。它还负责将特定数字标记为错误或正确。

function checkAns(){
    document.getElementById('alertMsg').style.visibility = "hidden";


    if(Ans1B == "selected"){
        correct++
        document.getElementById('marksymbol1').className = "smile";
    }
    else
    {
        document.getElementById('marksymbol1').className = "sad";
    }
    if(Ans2A == "selected"){
        correct++
        document.getElementById('marksymbol2').className = "smile";
    }
    else
    {
        document.getElementById('marksymbol2').className = "sad";
    }
    if(Ans3A == "selected"){
        correct++
        document.getElementById('marksymbol3').className = "smile";
    }
    else
    {
        document.getElementById('marksymbol3').className = "sad";
    }
    if(Ans4A == "selected"){
        correct++
        document.getElementById('marksymbol4').className = "smile";
    }
    else
    {
        document.getElementById('marksymbol4').className = "sad";
    }
    if(Ans5A == "selected"){
        correct++
        document.getElementById('marksymbol5').className = "smile";
    }
    else
    {
        document.getElementById('marksymbol5').className = "sad";
    }

根据 @DrewGoldsBerry 的回答,带有一些示例代码。这是下面代码的工作小提琴:http://jsfiddle.net/E3D6T/1/

使用类来设置 HTML,以指示哪些行应该具有突出显示功能。

<p class="highlight">Each word will be wrapped in a span.</p>
<p class="highlight">A second paragraph here.</p>

在你的 JS 中,拆分p元素转化为包裹在其中的单词span标签,然后可以将其绑定到点击函数:

// wrap words in spans
$('p.highlight').each(function () {
    var $this = $(this);
    $this.html($this.text().replace(/\b(\w+)\b/g, "<span>$1</span>"));
});

// bind to each span
$('p.highlight span').click(function () {
    $(this).parent().find('span').css('background-color', '');
    $(this).css('background-color', '#ffff66');
});

edit:

http://jsfiddle.net/jorgthuijls/E3D6T/16/

我将所有答案检查添加到单击功能本身。应该相当简单。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

用于突出显示功能的更高效的 JavaScript 代码? 的相关文章

随机推荐

  • 如何调试图表包“没有名为“plot”的模块”错误

    我正在一台 Windows 机器上使用 Anaconda 套件中的 Python3 和 IPython 笔记本 我跑了一个 pip install charts 安装软件包 我试图通过一些灵活和交互式的图表找到我的方法 任何建议表示赞赏 安
  • 使用 CMakeExternalProject_Add 构建 mongo-cxx-driver

    我正在尝试建立mongo cxx driver在基于 CMake 的项目中 该项目应该在 Windows macOS 和 ubuntu 容器中构建 我想确保所有这些平台上的软件将使用相同的驱动程序版本 因此我无法通过以下方式安装驱动程序及其
  • Java Runtime.getRuntime().exec() 似乎正在覆盖 $PATH

    对于一个自动化一些突变充分性测试的项目 我正在尝试从 Java 程序内部的源代码制作 GoLang 我已经能够从终端中的源代码中创建它 并尝试在 Java 中使用该命令Runtime getRuntime exec 命令 String en
  • 我们如何将 void_t 用于 SFINAE?

    我观看了 Walter Brown 在 Cppcon14 上关于现代模板编程的演讲 Part I Part II 他在那里展示了他的void tSFINAE 技术 Example 给定一个简单的变量模板 其计算结果为void如果所有模板参数
  • Retrofit + OkHTTP - 响应缓存不起作用

    我知道有很多类似的问题 但我已经阅读了所有这些问题 但没有一个真正有帮助 所以 这是我的问题 我正在使用 Retrofit okhttp 从 API 获取一些数据 我想缓存它们 不幸的是 我没有 API 服务器的管理员访问权限 因此无法修改
  • Google Glass 将视频流传输到服务器

    我正在尝试为 Google Glass 构建一个应用程序 它可以流式传输到服务器并让客户端通过网络浏览器查看流 到目前为止 我似乎需要通过 RTSP 到媒体服务器 例如 Wowza 执行此操作 然后拥有一个托管一些视频播放器的 Web 服务
  • 包含 url 值的 PHP 数组到包含组合值的新数组

    我已经尝试了很长时间 但找不到一种将数组合并到新数组的方法 大多数时候我迷失在循环和匹配中 我想收到一个可以执行以下操作的 php 5 方法 实施例1 假设有一个包含如下 url 的数组 Array a a b c a b c d e a
  • JSP - 如何在 session.setAttribute 中传递 javascript var? [复制]

    这个问题在这里已经有答案了 刚开始学习 JSP 并尝试在两个页面之间传递数据 我想知道是否可以将 javascript 变量传递给session setAttribute 目前 我可以通过 2 个 jsp 文件传递 一串文本 如下所示 JS
  • 如何修复 src 文件系统问题上的资源更改

    我正在尝试使用Hive关于 MR 执行SQL它中途失败并出现以下错误 Application application 1570514228864 0001 failed 2 times due to AM Container for app
  • 关于 PYTHONPATH 的 Python 2.x 多版本问题

    系统中安装了Python 2 6 现在我想使用Python 2 7中引入的模块 因为我没有root权限 所以我在我的主目录 HOME local 下构建并安装了2 7 我将以下内容添加到我的 HOME bashrc 中 export PAT
  • 用2个方阵模拟matlab的mrdivide

    我有 2 个 19x19 方阵 a 和 b 我尝试使用斜杠 mrdivide 运算符来执行除法 这样 c a b 我正在尝试在 OpenCV 中实现这一点 我发现一些人建议使用cv solve但到目前为止 我还没有找到任何可以给我提供接近
  • C++:提取 boost::variant 元素的大小

    我有一个向量 其中包含带有 boost variant 元素的结构 现在我必须序列化这个向量 由于规范的原因 我必须计算保存该向量所需的八位字节 现在我正在寻找一种方法来以简单的方式实现这一点 int allSize 0 for auto
  • 为什么 Laravel 的 Composer 创建项目执行失败?

    看来除非我使用sudo我的 Composer 命令无法创建 Laravel 项目 Without sudo它给了我以下错误 ErrorException copy Users H composer cache files laravel l
  • Python随机样本生成器(适应庞大的人口规模)

    你可能知道random sample population sample size 快速返回一个随机样本 但是如果你事先不知道样本的大小怎么办 你最终会对整个总体进行抽样 或者对其进行洗牌 这是相同的 但这可能是浪费的 如果大多数样本量与总
  • iPhone 6 不同的故事板?

    当我们拥有iPhone 4 and 5 我们检查了屏幕尺寸 并为每部 iPhone 制作了 2 个故事板 iPhone 4 if height 480 storyboard UIStoryboard storyboardWithName S
  • 显示屏幕顶部而不是位于 inputAccessoryView 上的标签

    这是我的代码 var messageView UITextView var textView UITextView textView text Add your message here textView textColor UIColor
  • 将表从 R 传输到 SQL

    我知道通常要从头开始创建一个SQL表 您需要首先创建一个空表 然后将数据插入到该表中 例如 create table CREATE TABLE Customers CustomerName int ContactName varchar 2
  • 在 jQuery Mobile 1.1 中进行繁重处理之前显示加载微调器?

    我要疯狂地尝试让旋转器出现 我已将繁重的处理功能绑定到一个按钮 document delegate clearread tap onClearRead 所以点击它会调用这个 var onClearRead function setTimeo
  • “System.IO.Stream”不包含 Windows 应用商店应用中“关闭”的定义

    当尝试在 Windows 应用商店应用程序上构建我的 Unity 3D 项目时 出现此错误 System IO Stream 不包含 Close 的定义 并且找不到接受 System IO Stream 类型的第一个参数的扩展方法 Clos
  • 用于突出显示功能的更高效的 JavaScript 代码?

    所以这是我需要清理的功能 我需要创建一个功能 观众可以单击句子中的任何单词 它就会突出显示 然而 我需要做到一次只突出显示一个单词 例如 如果您单击单词 you 然后您改变主意并单击单词 eagle 则单词 you 将被取消选择 它已经有现