Javascript 使用jQuery解析极不推荐的HTML

Javascript 使用jQuery解析极不推荐的HTML,javascript,jquery,Javascript,Jquery,我在理解如何在jQuery中使用嵌套选择器时遇到了一些问题。我正在解析我大学的课程列表,我希望它能让我知道我想要的课程是否开放。但是,该网站根本不使用css,因此识别我想要的类的唯一方法是打开,即读取字体标记的颜色属性 这是我试图阅读的HTML代码块 <TD><FONT FACE='Arial' SIZE='-1' COLOR='Black'>nameOfClass</TD> 不过,当我运行此程序时,我从未收到警报。我很确定这是我的语法,我已经很久没有做任何

我在理解如何在jQuery中使用嵌套选择器时遇到了一些问题。我正在解析我大学的课程列表,我希望它能让我知道我想要的课程是否开放。但是,该网站根本不使用css,因此识别我想要的类的唯一方法是打开,即读取字体标记的颜色属性

这是我试图阅读的HTML代码块

<TD><FONT FACE='Arial' SIZE='-1' COLOR='Black'>nameOfClass</TD>
不过,当我运行此程序时,我从未收到警报。我很确定这是我的语法,我已经很久没有做任何编码了,所以我可能犯了一些愚蠢的错误

您可以使用。但是为了让代码正常工作,您必须迭代所有
td
元素,而不仅仅是比较第一个元素的文本值:

$("td").each(function() {
    if($(this).text() === 'nameOfClass' && 
       $(this).children('font').attr('color') === 'Black') {
           alert("It actually works!");
    }
});
否则,
$(“td”).text()=“nameOfClass”
只测试页面中第一个
td
元素的文本是否为“nameOfClass”,这肯定不是您想要的。您希望找到包含该字符串的所有
td
元素


如果直接选择其
color
属性值为“Black”的所有
font
元素,则操作会简单得多。然后找出那些不包含类名的元素以及剩余的元素数量。如果没有,则该类未打开

var classIsOpen = $('font[color="Black"]').filter(function() { 
   return $(this).text() === 'nameOfClass';
}).length > 0;

如果类名可能作为其他名称的一部分出现,例如“Web”和“Advanced Web”,则只需对类名进行精确比较。如果不是这样,您可以使用选择器使代码更短:

var classIsOpen = $('font[color="Black"]:contains("nameOfClass")').length > 0;
你可以用。但是为了让代码正常工作,您必须迭代所有
td
元素,而不仅仅是比较第一个元素的文本值:

$("td").each(function() {
    if($(this).text() === 'nameOfClass' && 
       $(this).children('font').attr('color') === 'Black') {
           alert("It actually works!");
    }
});
否则,
$(“td”).text()=“nameOfClass”
只测试页面中第一个
td
元素的文本是否为“nameOfClass”,这肯定不是您想要的。您希望找到包含该字符串的所有
td
元素


如果直接选择其
color
属性值为“Black”的所有
font
元素,则操作会简单得多。然后找出那些不包含类名的元素以及剩余的元素数量。如果没有,则该类未打开

var classIsOpen = $('font[color="Black"]').filter(function() { 
   return $(this).text() === 'nameOfClass';
}).length > 0;

如果类名可能作为其他名称的一部分出现,例如“Web”和“Advanced Web”,则只需对类名进行精确比较。如果不是这样,您可以使用选择器使代码更短:

var classIsOpen = $('font[color="Black"]:contains("nameOfClass")').length > 0;

他们甚至没有关闭
标记:O无论如何,你能定义“打开”吗?@buzzsawdog谢天谢地,我没有研究它。我是一个自学成才的业余程序员,这一点可能从我糟糕的代码中就可以明显看出。或者从我所教的课程中可以看出;-)@IngoBürk阅读了这个问题,这是OP试图遍历\@charlietfl的旧代码我不是在抱怨HTML,而是在抱怨他编写的Javascript。他们甚至没有关闭
标记:哦,不管怎样,你能定义“open”吗?@Buzzsawdog谢天谢地,我没有研究它。我是一个自学成才的业余程序员,这一点可能从我糟糕的代码中就可以明显看出。或者从我所教的课程中可以看出;-)@IngoBürk阅读了这个问题,这是OP试图遍历\@charlietfl的旧遗留代码。我不是在抱怨HTML,而是在抱怨他编写的Javascript。太好了,这让我又动了起来。非常感谢你的帮助!太好了,我又动起来了。非常感谢你的帮助!