我在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: Result of expression 'input.replace' [undefined] is not a function.
有人有想法吗?谷歌并没有真正的帮助:\
更新1:
我正在使用jQuery,string1来自文本框。我正在调用第二个函数:
var bool = secondFunction (textarea1.val(), textarea2.val()); //Attetion! See Update 2!
更新2:
我错了第二个功能......它是:
function secondFunction(string1, array1) {
var string1masked = maskString(string1);
var array1masked = maskString(array1);
( ... )
}
所以我的函数不适用于数组。不幸的是我不知道如何改变它:(
答案 0 :(得分:2)
我猜你有这样的代码:
var textarea1 = $("#textarea1");
如果找不到该元素,则 textarea1.val()
会返回undefined
(即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 "";
}
如果您打算将多个空格转换为单个空格(如string with multiple spaces in it
- &gt; string with multiple spaces in it
),您还可以使用简化的RE:
/\s+/g
单个空白字符将被单个空格替换。多个空白字符也将被单个空格替换。请注意,我添加了g
标志,以便多次更换。
答案 1 :(得分:1)
我认为input
是您输入的文本框或其他内容?
在这种情况下,输入没有为其定义replace()
函数。您希望确保在字符串上调用replace()
- 输入中的值,而不是输入本身。试试这个:
function maskString(input) {
return input.value.replace(/\s\s+/," ");
}