-1

我找到了一个有效的脚本,但我不知道它是如何工作的。

这个split()例子使用的方法让我很头疼。有谁知道这个split()方法在这个例子中是如何工作的?我们可以将数字作为第一个参数传递给split()方法吗?那是一个分隔符,如果它是为什么它没有用引号括起来?

脚本

function noNumbers(field) {
   for ( var i = 0; i < 10; i++ ) {
      field.value = field.value.split(i).join("");
    }
}

HTML

   <form>
   Type some text (numbers not allowed):
    <input type="text" onkeyup="noNumbers(this);" />
   </form>
4

2 回答 2

1

基本上noNumbers采用字符串并将其拆分为给定标记处的数组,在这种情况下,数字存储在i. 之后,通过在各部分之间使用空字符串再次加入数组。

由于您对所有数字执行此操作,因此您的结果不包含任何数字。

例子

"1213Test".split(0).join("")
  == ["1213Test"].join("")
  == "1213Test"

"1213Test".split(1).join("")
  == ["","2","3Test"].join("")
  == "23Test"

"23Test".split(2).join("")
  == ["","3Test"].join("")
  == "3Test"

"3Test".split(3).join("")
  == ["","Test"].join("")
  == "Test"

如果您感到困惑,因为iis an integer:split将字符串作为参数,因此split(i)split(i.toString()).

于 2012-11-12T07:40:34.283 回答
0

在这种情况下,脚本循环十进制数字0, 1, 2...9,并为每个数字生成一个split(digit).join(). split 方法返回一个没有数字的字符数组。喜欢:

"This 1s an example".split(1)
["This ", "s an example"]

并用join("")它将数组连接回字符串:

["This ", "s an example"].join("")
"This s an example"
于 2012-11-12T07:42:55.767 回答