gpt4 book ai didi

javascript - 将 this.value 传递给 JS 中的函数,然后更改该值

转载 作者:行者123 更新时间:2023-11-28 15:55:55 25 4
gpt4 key购买 nike

我正在编写一个 JS 函数,我希望将其直接与 onfocus 事件一起使用,也可以在另一个函数中使用。问题是,如果我传递函数 this,那么我的所有函数代码都需要是 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("");
}

最佳答案

Objects are passed by reference, but primitives are passed by value 。由于 this.value 是一个基元(例如字符串或数字),因此当您将其传递给函数时它将被复制,并且对其进行的修改仅适用于该函数。

编写函数,使其返回一个值,然后将其分配回 this.value,如下所示:

this.value = makeNum(this.value);

function makeNum(value){
return value.match(/\d+(\.\d{1,2})?/g).join("");
}

关于javascript - 将 this.value 传递给 JS 中的函数,然后更改该值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18793581/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com