定位 JavaScript 中最接近的类

2024-01-01

我刚刚学习 javascript 并遇到了问题。
我试图定位最接近的类并更改值,但我只是不断收到 Cannot read property 'innerText' of null at HTMLUListElement。
这是不可能的还是我应该研究其他方法?
任何帮助或指导表示赞赏。

<div id="someId">
<h2>Test</h2>
<ul>
    <li>
        <p class="amount">5</p>
        <span class="name">My Name</span>
        <button class="plus">Plus</button>
    </li>
    <li>
        <p class="amount">10</p>
        <span class="name">My Name 2</span>
        <button class="plus">Plus</button>
    </li>
    <li>
        <p class="amount">15</p>
        <span class="name">My Name 3</span>
        <button class="plus">Plus</button>
    </li>
</ul>
const someList = document.querySelector('#someId ul');

someList.addEventListener('click', function(e) {
if (e.target.className === 'plus') {
    let newValue = e.target.closest('.amount');
    newValue.innerText += "5";
}
});

我已经将 .amount 更改为很多不同的东西,p 和 li > p 等,但没有运气。


.closest()沿着 dom/xpath 向上查看祖先。你的p.amount是兄弟姐妹,而不是祖先,因此您不会返回任何内容.closest()

没有单一核心 js 方法可以满足您的要求。 jQuery 提供了一个函数叫做。兄弟姐妹() https://api.jquery.com/siblings/如果您想使用它,这最接近您想要做的事情。但对于纯 javascript,要点是沿着 dom/xpath 树向上,然后返回。

您可以采用不同的方法来做到这一点,具体取决于您想要成为“锚点”的选择器。 @doodlemeister 的答案是一种方法,但在我看来,它并不是很好,因为它可能不像您希望的那样灵活。它假设向上到第一个父级,然后返回到第一个子级。 IOW 它期望您的 html 结构与您现在的结构完全相同。

更灵活的方式是这样的:

const someList = document.querySelector('#someId ul');
someList.addEventListener('click', function(e) {
    if (e.target.className === 'plus') {
        let newValue = e.target.closest('li').querySelector('.amount');
        newValue.innerText = +newValue.innerText + 5;
    }
});

然后您可以调整.closest()如果需要的话,您可以使用选择器querySelector()从那里返回 dom/xpath 并以您最初想要的类为目标。

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

定位 JavaScript 中最接近的类 的相关文章

  • html 链接不起作用 href javascript 参数太长

    a href alt a 在 href 中我调用了一个 javascript 函数 change 第二个参数 n1387519869249 1196 n1387519906965 1368 n 是一个非常长的值 大约 5070 个字符 但在
  • 有没有办法在javascript中代理(拦截)一个类的所有方法?

    我希望能够在类本身的构造函数内代理类的所有方法 class Boy constructor proxy logic do something before each call of all methods inside class like
  • JavaScript 支持逐字字符串吗?

    在 C 中 您可以像这样使用逐字字符串 server share file txt JavaScript中有类似的东西吗 模板字符串支持换行 so you can do this if you want https developer mo
  • 如何动态删除嵌套的json键?

    这是示例 json search facets author language value nep count 3 value urd count 1 source value West Bengal State Council of Vo
  • 使用javascript滚动滚动条或鼠标滚轮后触发事件

    我想知道是否可以触发事件after使用滚动条或鼠标滚轮 或在触摸设备上滑动 时滚动页面 基本上 我想检测用户何时停止滚动 以便我可以进行 AJAX 加载 而不是在滚动时加载 看起来jQuery s scroll 每次用户滚动时都会触发 并且
  • 为什么 Promise `.then` 方法的回调是反模式

    我在 StackOverflow 上看到了答案 人们建议为 AngularJS 服务提供回调函数 app controller tokenCtrl function scope tokenService tokenService getTo
  • 无需重定向的 HTML 页面提交

    有没有什么方法可以在不使用ajax的情况下提交html表单而无需从当前页面重定向 你可以设置一个target 为您form 这样您就可以将表单提交到新选项卡 target blank 或一个小的 隐藏的iframe target nameo
  • 如何使用 Nextjs/React 将 JSON 对象导出到 Excel?

    我有一个检索 json 对象的端点 如下所示 data id 1 temaIndicador Indian codigo 001 observaciones Interactions Specialist tertiary Regional
  • 指定 HTML5 输入类型 = 日期的值输出?

    我想将本机日期选择器添加到我的应用程序中 该应用程序当前使用遗留的本地系统 日期输入支持尚未广泛普及 但如果我可以基于兼容性提供这两种实现 那就太理想了 有没有办法指定 HTML 日期选择器给出的值的输出 歌剧的默认设置是yyyy mm d
  • 替换img路径jquery

    我正在尝试替换 jquery 中的 img 路径 注入远程页面 replaceexample com thumbs withexample com images 我已经尝试过这个 但似乎不起作用 img attr src replace t
  • 如何将焦点设置在 BootStrap 中的第一个输入字段上? [复制]

    这个问题在这里已经有答案了 可能的重复 如何将焦点设置到独立于 id 的 HTML 表单中的第一个输入元素 https stackoverflow com questions 277544 how to set the focus to t
  • 在给定索引上将字符串分成两部分并返回两部分

    我有一个字符串 需要在给定索引上拆分 然后返回两个部分 并用逗号分隔 例如 string 8211 8 211 98700 98 700 因此 我需要能够在任何给定索引上拆分字符串 然后返回字符串的两半 内置方法似乎执行分割 但只返回分割的
  • NodeJS - 将相对路径转换为绝对路径

    In my 文件系统我的工作目录在这里 C temp a b c d 在 b bb 下有文件 tmp txt C temp a b bb tmp txt 如果我想从工作目录转到该文件 我将使用以下路径 bb tmp txt 如果该文件不存在
  • 为什么浏览器允许onmousedown JS改变href?

    我很长时间以来都注意到 当您尝试复制链接位置或在 Facebook 上打开链接时 它会修改链接并将其传递给l php 例如 我可以被发送到 http www facebook com l php u http 3A 2F 2Fwww goo
  • 如何让php页面从html页面接收ajax post

    我有一个非常简单的表单 其中有一个名字输入字段 我捕获了表单数据 并使用标准 jQuery 发布方法通过 ajax 将其传输到 PHP 页面 但是 我根本无法从 PHP 页面获得任何在服务器端捕获数据的响应 我不确定我做错了什么或缺少什么
  • WebpackError:ReferenceError:Gatsby 上未定义窗口

    我已经在互联网上进行了大量搜索 但无法解决这个问题 我正在使用 Gasby 开发静态页面 但遇到此错误 WebpackError ReferenceError window is not defined 我的线索是 这与我正在使用的引导 模
  • D3 强制布局,较大的节点聚集在中心

    我一直在修改将用于标签云的强制布局 每个标签都由一个
  • jQuery:向左滑动和向右滑动

    我见过slideUp and slideDown在 jQuery 中 左右滑动的功能 方式怎么样 您可以使用 jQuery UI 中的附加效果来做到这一点 详情请参阅此处 http docs jquery com UI Effects Sl
  • 如何计算一行中Flexbox项目的数量?

    网格是使用 CSS flexbox 实现的 Example http jsbin com jumosicasi edit html css js output 本示例中的行数为 4 因为我出于演示目的固定了容器宽度 但是 实际上 它可以根据
  • HTML5 地理定位 - 在 iOS 上无法始终工作

    目前正在使用 HTML5 地理定位 我已经在所有网络浏览器上测试了它 它似乎工作正常 然而 当我在 iPad 上测试地理定位时 它在 iPad mini 上始终有效 但当我将其放在更大的 iPad iPad 2 上时 位置似乎并不总是有效

随机推荐

  • gitignore 跨所有分支?

    嘿 我正在尝试进入 git 作为 emacs 用户 首先要做的就是确保 git 忽略 和 文件 文档讨论了我一直在使用的 gitignore 然而 仍然有几个问题 gitignore 现已签入并部分 的一个分支 gitignore 应该是
  • Ruby HTTP 获取参数

    如何通过 ruby 发送带参数的 HTTP GET 请求 我尝试了很多例子 但都失败了 我知道这篇文章已经很旧了 但是为了那些由 google 带到这里的人 有一种更简单的方法可以以 URL 安全的方式对参数进行编码 我不知道为什么我没有在
  • 异或 Java 神经网络

    尝试使用 Java 中的 XOR 神经网络 但网络总是预测其训练的最终输出 这是我的代码 for int i 0 i lt 4 i Forward pass diff 1 while diff gt 0 01 SumError 0 Y1 I
  • 比较 MySQL 和 Java 时间

    我在 MySQL 中有一个日期时间字段 我通过调用 result getString date 访问它 现在我想检查天气 Java 中的当前日期和时间已经超过 MySQL 时间或早于 MySQL 时间来检查天气结果是否激活 MySQL 中的
  • 如何将短数组转换为字节数组

    我已经发现将短数组转换为字节数组 https stackoverflow com questions 2188660 convert short to byte in java and 字节数组转短数组 https stackoverflo
  • 如何以自定义方式在我的 Zend Framework 应用程序中实现 jquery?

    如何以自定义方式在我的 Zend Framework 应用程序中实现 jquery 附加 jquery jsok 附加脚本ok 将 POST 数据发送到控制器ok 处理发布的数据ok 发送 AjaxContext 响应给客户端now ok
  • C++03中如何在没有临时变量的情况下将数据立即填充到容器中

    假设我有一个Container template
  • 如何列出oracle中特定存储过程中使用的所有表

    我需要获取 Oracle 中特定存储过程中使用的所有表的列表 如何使用查询获取该列表 Dynamic SQLs 被跳过 因为它们没有在SEMANTIC编译期间检查 select proc syn referenced owner proc
  • 在 Powershell 中替换字符串中变量的成员

    我在 PowerShell 脚本中有以下字符串表达式 select count cnt from schema table where col column name is null 架构和表分别解析为 schema 和 table 的值
  • 使用非默认构造函数初始化成员类

    我正在尝试制作一个具有 SimpleWindow 类的 gui 其中包含 textPanel 类 class textPanel private std string text m public textPanel std string s
  • 由于 CMake 缺少 OpenSSL,无法构建 libwebsockets 库

    我正在尝试建立libwebsockets https libwebsockets org 在 Windows 10 上使用 CMake 和 MinGW 该库需要 OpenSSL 环境变量 OPENSSL CONF C Program Fil
  • 如何将外部字体加载到 HTML 文档中?

    如何将外部字体文件加载到 HTML 文档中 例子 使用 HTML CSS 和 或 JAVASCRIPT 将同一目录中的 TTF 文件中的文本 blah blah blah blah blah blah blah 设为自定义字体 看看这个分开
  • GCM XMPP 套接字在发送通知时始终获取 EPIPE 并断开连接

    我们有一个 xmpp 连接服务器 它将套接字连接到 GCM XMPP 端点并开始发送通知 我们注意到的一件事是发送半大通知 例如少至 1000 个设备 时 套接字会突然断开连接收到以下错误消息 Client disconnected soc
  • 如何在 M1 mac 上使用 C++ 运行 mediapipe

    环境 Macbook Air M1 2020 大苏尔 11 3 1 我想做什么 我想成功运行下面的 mediapipe c hello world https google github io mediapipe getting start
  • 使用密码将git项目推送到本地目录

    我目前正在将我的项目推送到 Dropbox 可以访问的本地文件夹 这就是我的备份和安全策略 我想知道是否可以添加另一层安全保护 这样如果有人获取了我的 Dropbox 文件夹 他们就必须输入密码才能提取该项目 当我添加新的遥控器时指定密码就
  • Fortran 90 或 2003 中的访问运算符“[ ]、( )、{ }”重载

    我可以在 FORTRAN 2003 中重载派生数据类型的条目访问运算符 或 吗 在下面的示例中 我想为派生数据类型 custom 定义访问方案 type custom integer dimension allocatable a end
  • php 提供下载后刷新[重复]

    这个问题在这里已经有答案了 第 1 页链接到第 2 页 第 2 页使用以下代码提供下载 header Content disposition attachment filename filename header Content type
  • Android 片段重叠

    我有一个包含两个片段的活动 一个用于显示列表 一个用于显示单击项目的详细信息 启动应用程序时 详细信息部分是静态的 一旦我单击某个项目 它就应该被替换 问题是旧片段没有被替换 所以两个视图都在彼此之上 我的活动布局是
  • 创建类路径资源中定义的名为“entityManagerFactory”的 bean 时出错

    我对 spring 和 spring boot 应用程序很陌生 创建类路径资源中定义的名称为 entityManagerFactory 的 bean 时出错 它说无法构建 EntityManagerFactory 控制台中显示错误 org
  • 定位 JavaScript 中最接近的类

    我刚刚学习 javascript 并遇到了问题 我试图定位最接近的类并更改值 但我只是不断收到 Cannot read property innerText of null at HTMLUListElement 这是不可能的还是我应该研究