【发布时间】:2019-02-23 02:11:30
【问题描述】:
我有这个功能:
function simplifyString (string)
{
var charsToFind = new Array(/[áàâãä]/g, /[éèêë]/g, /[íìîï]/g, /[óòôõö]/g, /[úùûü]/g, /ç/g, /[- \'&_]/g),
charsToReplace = new Array('a', 'e', 'i', 'o', 'u', 'c', '');
string = string.toLowerCase();
for (i = 0; i < charsToFind.length; i++)
{
string = string.replace(charsToFind[i], charsToReplace[i]);
}
return string;
}
我在循环中使用它,如下所示:
for (i = 0; i < objects.length; i++)
{
var value = simplifyString(objects[i].innerText);
console.log(value);
console.log(i);
}
Objects 变量包含一个元素数组。
控制台只会显示第一个元素的内部文本,i 会显示我的数组的长度 - 1。
如果我删除函数的循环,控制台将显示每个对象的内部文本和正确的数字序列。
我不太明白这种行为,有什么帮助吗?
【问题讨论】:
-
您可能会将
i泄漏到不同的范围内。 -
您能否显示更多代码。
-
我肯定被重新分配了!在 simpleString 函数中。如果你只是做 var 1 = 0,我想你会没事的。没有 var 将其设置为全局变量。
-
@MaheerAli 没有更多可展示的了。我只是用 JQuery 得到一组对象:
var objects = $('span') -
是的,你们是对的,我在我的函数中声明了
i,它现在可以工作了。没想到。非常感谢,这让我发疯了
标签: javascript regex loops