javascript - 使用 javascript 将一个数字关联到每个链接 html
问题描述
我想使用 js 为从 DOM 中选择的每个链接添加一个数字。
为此,我使用 map 方法制作了一个函数,以便将所有链接与一个键相关联
function mapLinks(){
var links = document.querySelectorAll('a')
var listLinks = new Array(links.length);
for(i = 0; i <links.length; i++){
listLinks[i] = i;
}
var mapLink = new Map([[listLinks, links]])
return (mapLink)
}
var map = mapLinks();
我试过这段代码,但它不是最好的解决方案,因为在某些情况下它会扭曲网页的结构
function linksNumber(){
for(var [key, value] of map){
for(var i = 0, j = 0; i < key.length, j < value.length; i++, j++){
value[j].textContent = value[j].textContent + key[i]
}
}
}
解决方案
您可以使用 css::before
或::after
选择器content: attr(data-n)
来保持页面结构基本相同。
function mapLinks(){
var links = document.querySelectorAll('a')
var listLinks = new Array(links.length);
for(i = 0; i <links.length; i++){
links[i].setAttribute('data-n', i)
}
var mapLink = new Map([[listLinks, links]])
return (mapLink)
}
mapLinks()
a::after {
content: attr(data-n);
width: 10px;
height: 10px;
background: yellow;
display: inline;
font-size: 10px;
position: relative;
top: -6px;
}
<a href="test">Test</a>
<a href="hi">Hi</a>
如果不能添加css文件,可以使用JS添加内联<style
>元素:
var sheet = document.createElement('style');
sheet.innerHTML = `
a::after {
content: attr(data-n);
width: 10px;
height: 10px;
background: yellow;
display: inline;
font-size: 10px;
position: relative;
top: -6px;
}
`
(document.head || document.getElementsByTagName('head')[0]).appendChild(sheet);
或者,除了创建样式表之外没有 javascript:
var sheet = document.createElement('style');
sheet.innerHTML = `
body { counter-reset: number -1; }
a::after {
content: counter(number);
counter-increment: number;
width: 10px;
height: 10px;
background: yellow;
display: inline;
font-size: 10px;
position: relative;
top: -6px;
}
`;
(document.head || document.getElementsByTagName('head')[0]).appendChild(sheet);
<a href="hello">Hello</a>
<a href="world">World</a>
推荐阅读
- java - 可以在Tomcat上部署springboot,但是运行时显示404
- algorithm - Heuristic 将如何影响 Dikstras 算法使其成为 A* 算法
- sitecore - 如何解决 Sitecore 计划任务在添加后 10 分钟内被跳过的问题?
- python - 如何在 Pandas 中通过 Id 将数据框的列值替换为另一个数据框值
- ruby-on-rails - 在数据表中将布尔数据字段从小写“true”转换为大写“TRUE”
- vagrant - Vagrant 2.2.3 错误:等待机器启动时超时
- excel - 宏程序不连续运行...只运行一次
- aws-lambda - 在 aws lambda 中运行 AIRFLOW
- go - 如何使用 testify/mock 在 golang 中模拟数据库层
- php - 如果表数据是动态的并且可能最多两个维度,如何将 rowspan 和 colspan 与数据表一起使用?