【发布时间】:2012-02-16 00:25:28
【问题描述】:
我正在尝试了解是否有 javascript 方法来搜索字符串以查看该字符串是否包含字符串数组中的任何值。
一个例子是:
var a = 'How now brown cow';
var b = new Array('red', 'green', 'brown');
结果函数将返回 true,因为单词 brown 包含在字符串 a 中。
更具体地说,我正在尝试做的事情(使用表单输入中的值除外)是:
var a = '12345@gmail.com';
var b = new Array('.com', '.net', '.org');
这也应该返回 true。然后基于此,我将继续接受var a 为有效。
我现在的实际代码(总是返回null)如下:
function check_domain(){
for(var i=0; i<domains.length; i++){
var d = domains[i];
if(elemen.value.indexOf(d) != d){
return null;
}
else{
vEmail.style.visibility = 'visible';
}
}
}
window.domains = new Array(....Array values here....);
【问题讨论】:
-
顺便说一句,您不应该真正使用 window 对象来存储变量。
-
仅供参考,
[...]语法优于new Array(...)语法,除非您想创建一个包含一定数量未定义元素的新数组(在这种情况下,您将使用new Array(n)表示 @ 987654332@ 元素)。除此之外,您的代码会泄漏全局变量,例如,您真的应该在check_domain()函数中使用var i- 您真的不希望任何循环变量成为全局变量! -
@ThiefMaster 我修复了
var i问题,但数组不是空的,我只是将其留空并写下我所做的,因为它有超过 100 个字符串,占用了大量空间与问题无关。 -
@Jivings 为什么不呢?以及我应该怎么做才能避免它。我的代码发生了很多这样的事情,因为我使用
addEventListener方法来调用所有函数。每当用户单击页面时,有关该元素的所有信息都会存储为elemen;当他们单击其他内容时,elemen的值会自动更改为单击的新元素。我应该将变量声明为全局变量并像那样使用它们吗?我很困惑,因为人们一直告诉我不要使用全局变量,但我不知道如何避免它并仍然实现我的代码的目的。 -
对不起 PTBN :) 你最好只在范围顶部用
var声明它们。如果您对改进 JavaScript 感兴趣,请查看 closures 和 self invoking functions 以控制范围。
标签: javascript arrays string search validation