[英]How to dynamicly add class and id to specific tag using Javascript/JQuery
这是我的HTML
<h1>Lorem Ipsum<h1>
<h2>Lorem Ipsum first h2<h2>
<h2>Lorem Ipsum second h2<h2>
<h2>Lorem Ipsum third h2<h2>
如何添加class =“ sampleClass”到每个h2标签,并使用javascript / jquery为每个h2标签提供带有递增编号的id?
所以我可以得到以下
<h1>Lorem Ipsum<h1>
<h2 class="sampleClass" id="0">Lorem Ipsum first h2<h2>
<h2 class="sampleClass" id="1">Lorem Ipsum second h2<h2>
<h2 class="sampleClass" id="2">Lorem Ipsum third h2<h2>
也许我必须使用循环,但我还不能做到这一点:(
谢谢
无需jQuery
document.querySelectorAll('h2').forEach(function(el, i){
el.id = i;
el.classList.add('sampleClass');
});
在纯JS / HTML中有几种技术可以做到这一点。 在这里阅读更多:
https://developer.mozilla.org/zh-CN/docs/Web/Events/DOMContentLoaded
并根据上面的页面搜索更多内容。
document.addEventListener("DOMContentLoaded", function(event) {
const headers = document.getElementsByTagName("h2");
Array.from(headers).forEach((header, index) => {
header.classList.add("sampleClass")
header.setAttribute("id", index)
})
});
由于getElementsByTagName($tagNameHere)
标签查找它们,请使用getElementsByTagName($tagNameHere)
我已将其保存到const
变量中只是为了实现可复制性,这不是必需的。
getElementsByTagName($tagNameHere)
将是HTMLCollection。 它似乎是Array或List的一种,但是它没有Java的Collection中所期望的方法( 请注意 ,HTMLCollection的实现因浏览器而异-欢迎进入浏览器世界中的Javascript:])。
要遍历HTMLCollection,可以使用几种解决方案。 对我而言,最直观的方法是使用ES6中引入的Array.from
方法将其转换为Array。
还有 ,
如@Aboalnaga答案中所述,您可以只使用querySelectorAll("h2")
-在文档中查找元素集合的另一种方法。 对此进行更改,将返回为其实现了forEach
集合(至少在今天的Chrome中如此),您可以在不进行强制转换的情况下对其进行迭代。
但
您不能真正确定此方法是否会在每个浏览器中始终存在(并且通常应该关心您要支持的每个浏览器中代码的行为方式),因此最好使用Array.from
,不要担心关于浏览器实现之间的差异。
由于要进行迭代,因此可以在循环内访问HTMLElement。 它具有classList对象。 该对象拥有用于管理元素类的API。
header.classList.add("sampleClass")
您可以使用setAttribute
方法来执行此操作。 header.setAttribute("id", index)
index
来自forEach
循环。 这是它的第二个论点。
同样在您最初的问题中,您还没有关闭<h1>
和<h2>
标签!! 结束标记的语法为</h2>
。 在编码时要小心和详细:)。 您的错误将创建所需标记的两倍,因为浏览器会自动为您关闭每个打开的标记。
与解决方案链接到Codepen:
https://codepen.io/anon/pen/wExLdM
相关链接:
https://developer.mozilla.org/pl/docs/Web/API/Element/classList
http://clubmate.fi/javascript-adding-and-removing-class-names-from-elements/
您可以使用jquery使用以下代码执行任务
$(document).ready(function () {
$('h2').each(function (i) {
$(this).addClass('sampleClass');
$(this).attr("id", i);
});
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.