[英]How can I check all “a” elements inner text against a set of labels text for matches using JavaScript?
我的页面上有一堆“ a”元素,它们保存日历的月份。 我有隐藏的标签,每个标签都包含一个月中的某天。 我想使用JavaScript检查是否存在匹配项。 如果存在匹配项,我想添加嵌套在a元素内的HTML。
这是我尝试过的方法,但未按预期工作:
<span id="eventDayLabel1" class="daysClass">18</span>
<a href="javascript:__doPostBack('ctl00$MainContent$Calendar2','6317')" style="color:Black" title="April 18">18</a>
$(function () {
$('a').on('click', function (event) { event.preventDefault(); });
});
var elemAs = document.getElementsByTagName('a');
for (var i = 0; i < elemAs.length; i++) {
var elemA = elemAs[i];
var dayLabels = document.getElementsByTagName('daysClass');
function contains(dayLabels, elemA) {
for (var i = 0; i < dayLabels.length; i++) {
if (dayLabels[i].innerText == elemA.innerText) {
// add HTML here
}
}
return false;
}
}
为什么这段代码不起作用? 我检查了标签和创建的元素是否匹配(使用Chrome中的inspect元素)。
您没有调用contains()
函数,而是使用getElementsByTagName()
获取一个class
。
只需删除该函数并return false
,然后使用getElementsByClassName()
。
var elemAs = document.getElementsByTagName("a"); for (var i = 0; i < elemAs.length; i++) { var elemA = elemAs[i]; var dayLabels = document.getElementsByClassName("daysClass"); //function contains(dayLabels, elemA) { for (var i = 0; i < dayLabels.length; i++) { if (dayLabels[i].innerText == elemA.innerText) { console.log('match'); } } //return false; //} }
<span id="eventDayLabel1" class="daysClass">18</span> <a href="javascript:__doPostBack('ctl00$MainContent$Calendar2','6317')" style="color:Black" title="April 18">18</a> <span id="eventDayLabel1" class="daysClass">18</span> <a href="javascript:__doPostBack('ctl00$MainContent$Calendar2','6317')" style="color:Black" title="April 18">17</a> <span id="eventDayLabel1" class="daysClass">19</span> <a href="javascript:__doPostBack('ctl00$MainContent$Calendar2','6317')" style="color:Black" title="April 18">19</a>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.