将 this.value 传递给 JS 中的函数,然后更改该值
Passing this.value to a function in JS and then changing that value
我正在编写一个JS函数,我希望它直接与onfocus事件一起使用,也可以在另一个函数中使用。问题是,如果我传递函数这个,那么我所有的函数代码都需要是field.value。当我在函数中使用它时,这会导致问题,因为传递的变量没有 .value 属性。
我当时的想法是将this.value传递给函数,这样我就可以处理传递的数据,无论是字段值还是函数值。但是,现在它不会更改原始字段的值。
有没有解决这个问题的好方法,或者我只需要有两个功能?
这是我的两个不同版本的代码:
// Can't be used with when using onfocus="makeNum(this.value)"
function makeNum(value){
value = value.match(/'d+('.'d{1,2})?/g).join("");
}
或
// Can't be used with a function, but works when using makeNum(this)
function makeNum(field){
field.value = field.value.match(/'d+('.'d{1,2})?/g).join("");
}
对象通过引用传递,但基元按值传递。由于this.value
是一个原语(例如字符串或数字),因此当您将其传递给函数时,它将被复制,并且对它的修改仅应用函数。
编写函数,使其返回一个值,然后将其赋回this.value
如下所示:
this.value = makeNum(this.value);
function makeNum(value){
return value.match(/'d+('.'d{1,2})?/g).join("");
}
如果您展示了所需代码的两种风格,我们可能会提供更具体的帮助。 对象是通过引用传递的,但单个变量不是,因此不能对两者具有相同的行为。
我能想到的选择是这样的:
-
将对象作为参数传递到函数中,然后引用
obj.value
以更改原始对象上的实际值。 -
将回调函数传递给对对象进行操作的主函数,然后可以使用几种不同的方法来设置来自同一核心代码的值。
-
将核心函数分解为较小的函数,这些函数可以从不同位置调用,并在对不同类型的源数据进行操作时以不同的方式使用。
-
编写一个函数,该函数可以从其参数中判断您传递给它的数据类型并相应地操作。
对于您的代码示例,下面是可以通过几种不同方式使用的核心函数:
function makeNum(value){
return(value.match(/'d+('.'d{1,2})?/g).join(""));
}
x.onfocus = function() {
this.value = makeNum(this.value);
}
相关文章:
- 如何在JQuery函数中定义一个值,然后调用另一个函数并使用该值
- JS:检查URL中的参数,然后迭代一个参数为var的函数
- 根据函数参数将CSS值存储在var中,然后对其进行操作
- 选择值,然后只调用函数
- 如何用javascript调用函数,然后在滚动事件中调用该函数的特定实例
- 使用变量的名称,然后为该变量定义函数
- 加载文件,然后调用回调函数
- 等待函数完成,然后将返回值分配给变量JS
- 使用函数for循环遍历对象以更改值,然后返回结果
- 如何每 10 秒调用一次 JS 函数,然后以角度激活一个函数
- 如何让 setTimeout 函数运行,然后停止使用循环
- 蓝鸟与猫鼬,类型错误:.create(..).然后(..).Nodeify不是一个函数
- Javascript:编写一个函数,接收一个数组,然后返回一个只有唯一数字的数组,只删除数组
- 如何运行一个调用某个函数的函数首先完成它,然后再调用下一个函数.正在创建回调函数
- Javascript Promise().然后防止在执行第一个调用之前重新调用该函数
- 需要一个文件,然后使用一个函数,而不显式地将所需文件用作命名空间
- 承诺然后函数不执行
- 图像淡出到另一个,然后函数加载新的网页
- 外部变量不能在Promise内部改变.然后函数
- 如何传递参数给"然后"函数