javascript - 如何获取并存储html元素的部分id

标签 javascript html

我正在开发一个网站,该网站是一本书的在线版本。这本书有很多版本,因此网站使用可变分页来处理各种版本——用户选择他的版本并显示页码。

页面以 HTML 标记进行编码。因此,例如:

text 
<span id=ed19xxpgxxx> </span> 
text 2

其中span标签的id是版本和页码。每个版本中的每个分页符都会重复此操作。

现在,我需要做的是能够获取以我正在使用的版本开头的所有 id,例如 ed1939。然后我需要获取与 id 连接的每个页码并插入该页码。我的想法是找到所有这些字符串,从中删除页码信息,然后将它们插入到 HTML 中。根据我的研究(12),我认为我需要使用querySelectorAll。但我经验不足,不知道该怎么做。到目前为止,我看到的所有引用资料都仅涉及选择具有公共(public)起始字符串的 id,而不是操作它们。

现在使用的解决方案是对很长的 if block 中的每个唯一 id 使用 document.getElementById,这可能会得到改进。

最佳答案

当前设置并不理想;解析字符串而不是分离数据属性(例如)会更慢,如果您有很多元素(听起来像您可能有),这可能是一个因素。

无论如何...

var my_edition = 'ed1939';

//get all elements pertaining to pages of this edition
var page_elements = document.querySelectorAll('[id^="'+my_edition+'"]');

//loop over them and, for each...
[].forEach.call(page_elements, function(el) {

    //...extract the page number via REGEX
    var page_num = el.getAttribute('id').match(/pg(\d+)$/);
    if (page_num) {

        //...append it to the page - note the number in isolation lives in page_num[1]
        el.innerHTML = '<p>Page: '+page_num[1]+'</p>'; //or whatever you want to do
    }
});

关于javascript - 如何获取并存储html元素的部分id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48666087/

相关文章:

javascript - 减少 Bootstrap 4 Card Z-index 小于表 thead

javascript - Redux reducer 不显示我的控制台日志并返回未定义

javascript - 内容可编辑 Div,附加 HTML 导致问题。以编程方式附加 HTML 后键入的每个文本都会添加到最后一个 HTML 标记中

javascript - Onclick 在 <a> 标记中不起作用

javascript - 从 div 中心垂直的 CSS3(或 jQuery)背景颜色动画

javascript - ReactDOM.render 未渲染页面

javascript - 如何使用 React.createElement 基于 prop 或变量动态创建组件

javascript - 带系列图表的 HighCharts DatePicker

javascript - jQuery 加载外部 HTML 文件但在页面刷新后不会保持静止

html - 为表体添加滚动条