javascript - If = 一个类(class),但有两个类(class)

标签 javascript

我有一个验证脚本来验证两个不同的类。我想为一些生成数组 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 的评论,我建议使用正则表达式(正如我之前提到的那样)以避免在您可能具有相似类名(例如 selValidateselValidateOff或类似的东西)。

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/

相关文章:

javascript - 使用js offsetHeight获取包含图像的div的高度

javascript - 通过插值引用对象中的对象(Angular 2+)

javascript - 移动一个 div 元素

javascript - 禁用 Esc 键以关闭 jQuery Mobile 上的面板

java - HTML 字段 json 编码为深层嵌套对象

javascript - 如何更改 .js 文件中的 d3.js 饼图代码

javascript - 页面统计信息始终显示 IFRAME 的名称,而不是真实的文档名称

javascript - 在 JavaScript 的 li 中按时间顺序对 li 重新排序

JavaScript:确保表单值唯一,Java Spring Rest 作为后端

javascript - 如何使用 JavaScript Lib 将字符串(WYSIWYG)转换为原始 html?