我有一个验证脚本来验证两个不同的类。我想为一些生成数组 onmouseover 的选择框添加一个额外的类。问题是,选择框有两个类,一个用于验证,一个用于数组,除非它有确切的名称,否则我的脚本无法识别它。如果使用 == 它根本不起作用,但使用 = 它会尝试验证我页面上的所有元素,即使是那些没有任何类的元素。
我想知道如何使用此脚本在不破坏其余页面的情况下使它最有效。
这是一个 HTML 示例
<div class="select-styled">
<select id="pm" name="pm" class="selValidate pmpop" onmouseover="pmpop();">
<option value="Foo">Foo</option>
<option value="">- Remove -</option>
</select>
</div>
这是验证脚本
for (i=0; i<thisform.elements.length; i++) {
if (thisform.elements[i].className = "selValidate" || thisform.elements[i].className == "req" || thisform.elements[i].className == "valfocus") {
//do stuff
}
}
最佳答案
你为什么不使用match()
?
if (thisform.elements[i].className.match('selValidate')) {
// do stuff
}
您不能在 if
中使用赋值运算符,因为它会这样做...赋值。 ==
是一个比较运算符。但是您似乎想检查是否为具有许多元素的元素设置了一个 css 类。
所以 match()
会更好,因为它会搜索字符串中出现的字符串,而不是比较两个字符串文字以查看它们是否相等。
此外,match()
可以接受正则表达式,这很强大。 :)
编辑:
根据 Barney 的评论,我建议使用正则表达式(正如我之前提到的那样)以避免在您可能具有相似类名(例如 selValidate 和 selValidateOff或类似的东西)。
if (thisform.elements[i].className.match(/\bselValidate\b/)) {
// now, really do stuff
}
两者都很好,真的。我只是取决于您希望搜索的范围有多窄。
Here is a nice cheat sheet开始使用 JavaScript 中的正则表达式。
关于javascript - If = 一个类(class),但有两个类(class),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22942412/