Javascript TypeError:表达式的结果';输入。替换';[未定义]不是函数

Javascript TypeError:表达式的结果';输入。替换';[未定义]不是函数,javascript,Javascript,我用javascript编写了以下函数: function maskString(input) { return input.replace(/\s\s+/," "); } 很简单。 在第二个函数中,我写道: function secondFunction(string1, string2) { //Attetion! See Update 2! var string1masked = maskString(string1); var string2masked = maskStr

我用javascript编写了以下函数:

function maskString(input) {
  return input.replace(/\s\s+/," ");
}
很简单。 在第二个函数中,我写道:

function secondFunction(string1, string2) { //Attetion! See Update 2!
  var string1masked = maskString(string1);
  var string2masked = maskString(string2);
  ( ... )
}
错误消息是:
TypeError:表达式“input.replace”[undefined]的结果不是函数。

有人有主意吗?谷歌并没有真正的帮助:\

更新1:
我使用的是jQuery,string1来自一个文本框。我这样调用第二个函数:

var bool = secondFunction (textarea1.val(), textarea2.val()); //Attetion! See Update 2!
var textarea1 = $("#textarea1");
更新2:
第二个函数我错了。。。它是:

function secondFunction(string1, array1) {
  var string1masked = maskString(string1);
  var array1masked = maskString(array1);
  ( ... )
}

所以我的函数不适用于数组。不幸的是,我不知道如何更改它:(

我假设
输入
是您的输入文本框还是什么

在这种情况下,输入没有为其定义的
replace()
函数。您要确保对字符串调用
replace()
,该字符串是输入中的值,而不是输入本身。请尝试以下操作:

function maskString(input) {
  return input.value.replace(/\s\s+/," ");
}

我猜您有这样的代码:

var bool = secondFunction (textarea1.val(), textarea2.val()); //Attetion! See Update 2!
var textarea1 = $("#textarea1");
textarea1.val()
如果找不到元素(即ID为
textarea1
的元素),则返回
未定义的
。检查您是否在元素选择器中键入了错误,以及是否在元素可用后调用了该函数

此函数适用于字符串和包含字符串的数组。如果参数或数组值既不是字符串也不是数组,则它不会触及该值

function maskData(input) {
    // edit strings
    if (typeof input == "string") return input.replace(/\s\s+/, "");

    // if 'input' is an array, iterate through its elements and pass it to maskData again
    if (input instanceof Array) {
        for (var i=0; i<input.length; i++) {
           input[i] = maskData(input[i]);
        }
        return input;
    }
    // otherwise just return itself untouched
    return input;
    // alternative: return an empty string
    //return "";
}

一个空白字符将被一个空格替换。多个空白字符也将被一个空格替换。请注意,我添加了
g
标志,因此替换会多次发生。

它不起作用:(消息是:
TypeError:expression'input.value'[未定义]的结果)不是函数。
。输入实际上不是文本字段(请参阅更新1).Ah,我明白了。那么这没什么错。我会仔细检查你的jQuery引用-确保版本正确,并且只针对一个版本。嗯,我看到我犯了一个错误。第二个参数是数组,没有字符串,这似乎就是问题所在(请参阅更新2).但我不知道如何处理它…不。一切都是正确的!我认为数组是问题所在(请参阅更新2)确切地说,什么是
array1
?一个什么?字符串的数组?是的,我想是的。但说实话,我不是100%确定,因为它是由XML解析器生成的……有没有办法检查它?比如PHP中的var_dump?一些PHP函数已经用Javascript实现了,就是其中之一。