首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用JS向<a>标记添加属性

使用JS向<a>标记添加属性
EN

Stack Overflow用户
提问于 2021-01-10 05:20:19
回答 2查看 564关注 0票数 0

正如上面的图片所描述的,我试图在我的网页中的“一组特定的”访问链接( li标记中的链接)旁边加上一个勾标(✓)。

HTML用于向标签插入一个“”属性。我将这段代码放在页脚(在链接显示在屏幕上之后)。但是,这不起作用(我没有看到在HTML中创建的属性)。

代码语言:javascript
复制
localStorage.setItem('visited-'+window.location.pathname,true);
var links = document.querySelectorAll('#the-content > ul > li > a');
for (i=0;i<links.length;i++) {   
  var link = links[i];
  if (link.host == window.location.host && localStorage.getItem('visited-' + link.pathname + '/')) {
    link.dataset.visited=true;
  }
}

CSS代码

我可以确认这段代码是否正常工作,就好像我手动为标记创建了一个属性一样,应用了样式设置。

代码语言:javascript
复制
article .the-content a[data-visited] {
  border-bottom: 1px dashed orange;
}

article .the-content a[data-visited]:after {
  content: ' ✓';
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-01-10 05:28:15

使用setAttribute()

代码语言:javascript
复制
link.dataset.visited=true;
link.setAttribute('data-visited', 'true');

dataset属性只操作JavaScript属性,但不影响JavaScript属性。有关这种差异的更多信息可以在以下问题中找到:属性和属性在HTML中有什么区别?

票数 2
EN

Stack Overflow用户

发布于 2021-01-10 06:00:56

您可以为此使用createAttribute()

只需替换

代码语言:javascript
复制
link.dataset.visited=true;

使用

代码语言:javascript
复制
let attr = document.createAttribute("data-visited"); // Create a "data-visited" attribute
attr.value = true; // Set the value of the attribute
link.setAttributeNode(attr); // assign attribute node to element

要了解有关createAttribute() check 的更多信息,请执行以下操作

更新: html中使用的'the-content‘是一个类,而不是id也替换。

代码语言:javascript
复制
document.querySelectorAll("#the-content > ul > li > a");

使用

代码语言:javascript
复制
document.querySelectorAll(".the-content > ul > li > a");
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65650337

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档