javascript - 使用 JS 访问 HTML 数据属性,而不使用 .getelementbyid?

标签 javascript jquery html

让我保持简单。 Scrollit.js,您在导航链接上设置一个 data-scroll 属性,并在您希望其滚动到的内容处设置一个 data-index 。

您无需为任何一个事物设置特定的 ID 即可使其正常工作。那么为什么当我阅读有关使用 data- 属性时,JS 总是以 getelementbyID(#..) 开头?

我正在寻找一个使用它的微框架。

最佳答案

访问 DOM 元素的方法有多种。

$x() 将让您捕获具有给定 xPath 表达式的节点。

querySelector 还可以让您获得相同的结果(在 Firefox 控制台中键入 help(),它将带您进入 Web 帮助程序页面)。

我喜欢 querySelectors,所以我会使用它们。

var changes_indexes_to_cubes = function() {
  var indexed = document.querySelectorAll("[data-index]");
  for(var i=0; i<indexed.length; i++) {
    indexed[i].innerHTML = parseInt(i)**3;
  }
}


document.querySelector("[data-foo]").addEventListener('click', changes_indexes_to_cubes)
<!DOCTYPE html>
<html>
<head>
  <title></title>
</head>
<body>
  <div>
    <span class="lorem" data-index="1">0</span>
    <span class="lorem" data-index="2">1</span>
    <span class="lorem" data-index="3">2</span>
    <span class="lorem" data-index="4">3</span>
    <span class="lorem" data-index="5">4</span>
    <span class="lorem" data-index="6">5</span>
    <span class="lorem" data-index="7">6</span>
    <span class="lorem" data-index="8">7</span>
    <span class="lorem" data-index="9">8</span>    
    <span class="lorem" data-index="10">9</span>
    <p class="Lorem" data-foo="foo">Click me to change everything</p>  
  </div>
</body>
</html>

关于javascript - 使用 JS 访问 HTML 数据属性,而不使用 .getelementbyid?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43672657/

相关文章:

javascript - 对于两次不同的按钮点击,从 Ajax 调用的 MVC 操作方法中获取不同的数据

javascript - 是否应该在生产版本中删除 NGXS NgxsLoggerPluginModule?

javascript - 如何使用 jQuery 从网页中删除复制内容的内联样式?

javascript - 为什么 blur.js 试图访问文件 "none"?

javascript - 无法在 asp.net core 中使用 ajax 将 json 发布到 Controller

php - 在表单提交操作后显示隐藏的 DIV

javascript - 如何使用 jQuery 将类添加到 div 内的所有图像?

javascript - 正则表达式中出现意外的标记错误

javascript - 使用 ionic 范围来设置月份和年份

html - css 更有效率?更改箭头和标题的颜色