我想找到课程"附件",如果它的内容包含字符串" .csv",则添加一个类" icon-file -excel"
HTML
<div id="attachments">
<a class="attachment" href="#">ContentLink__c.csv — application/vnd.ms-excel 11517 bytes —</a>
<a class="attachment" href="#">LTC.txt — text/plain 18349 bytes —</a>
</div>
JS
var att = document.getElementsByClassName('.attachment');
if (att.innerHTML.indexOf(".csv") != -1) {
att.className = attachment.className + " icon-file-excel";
}
答案 0 :(得分:2)
您需要循环结果。 getElementsByClassName
会返回HTML collection
。这是一个包含一个或多个元素的数组对象。
其他一些编辑:
document.getElementsByClassName('attachment');
请勿在此处使用点。只是classname [index]
att[i].className += " icon-file-excel";
只需使用+=
将字符串附加到班级名称。
var att = document.getElementsByClassName('attachment');
for (var i = 0; i < att.length; i++)
{
if (att[i].innerHTML.indexOf(".csv") != -1) {
att[i].className += " icon-file-excel";
}
}
.icon-file-excel {
color: green;
}
<div id="attachments">
<a class="attachment" href="#">ContentLink__c.csv — application/vnd.ms-excel 11517 bytes —</a>
<a class="attachment" href="#">LTC.txt — text/plain 18349 bytes —</a>
</div>
一些改进提示:
document.getElementsByClassName
,您可以使用document.querySelectorAll
,它允许您选择 css选择器,如.attachments
,并返回HTML集合。classList
添加和删除元素中的类。比附加字符串更强大。答案 1 :(得分:2)
getElementsByClassName
返回匹配元素的array-ish列表。你不能把它当成一个元素。由于它是类似数组的,你必须循环该数组并对每个数组的元素进行字符串测试。
var atts = document.getElementsByClassName('.attachment');
for (i = 0; i < atts.length; i++) {
if (atts[i].innerHTML etc...) {
atts[i].className = ...
}
}
答案 2 :(得分:1)
getElementsByClassName()
的字符串中不应该有一个点。var attachments = document.getElementsByClassName('attachment');
for (var i = 0; i < attachments.length; i += 1) {
att = attachments[i];
if (att.innerHTML.indexOf(".csv") !== -1) {
att.className = att.className + " icon-file-excel";
}
}
在较新的浏览器中,您可以使用更健壮的.classList
:
if (att.innerHTML.indexOf(".csv") !== -1) {
att.classList.add("icon-file-excel");
}