在JavaScript中将逗号替换为斜杠

replacing commas with slashes in JavaScript

本文关键字:替换 JavaScript      更新时间:2023-09-26

我正在尝试用JavaScript中的/替换,,并编写了以下代码。表单中有多个文本框可用。我想编写一个函数,并在所有文本字段上调用它们。

我遇到的问题是,我无法将当前ID发送到JavaScript方法。这是如何正确完成的?

function removeComma(val) {
  var values = document.getElementById('val').value;   //Object Required Error
  var n=values.replace(/,/, "/"); 
  document.getElementById('val').value=n;
}
<input type="text" id="one" name="one" onkeypress="removeComma(this)">
<input type="text" id="two" name="two" onkeypress="removeComma(this)">
<input type="text" id="three" name="three" onkeypress="removeComma(this)">

我从上面的代码中得到的错误是第一行的OBJECT REQUIRED

您正在将单击的元素传递给函数,因此根本不需要document.getElementById()。这解决了您的问题。

function removeComma(val) {
    var values = val.value;
    var n=values.replace(/,/g, "/"); 
    val.value=n;
}

还请注意,onkeypress在更改input元素的值之前被触发。如果要使用input的上次更新值,可以使用onkeyup,更确切地说是oninput

如果你真的必须使用元素的id,你需要在参数中传递它:

<input type="text" id="one" name="one" onkeypress="removeComma(this.id)">

然后删除val:周围的引号

var values = document.getElementById(val).value;

应该是…

document.getElementById(val).value

相反,因为您可能会分别为每个输入文本框调用此函数,将它们的id作为params发送到函数中。

更新:。。。您的编辑清楚地表明事实并非如此:您正在将元素本身传递到一个函数中。这很好,但你不必用document.getElementById来照顾这个元素——你已经有了它

不过,这里还有另一个问题:如果需要替换所有逗号,则需要在正则表达式中添加/g修饰符。否则,不会替换多个逗号(例如,通过复制粘贴添加的逗号)。

总的来说,我会这样重写:

function removeComma(el) {
  el.value = el.value.replace(/,/g, '/');
}

这是一把小提琴(这是它的叉子与输入处理程序一起工作——在我看来,后者更流畅)。

document.getElementById('val')

应该是

document.getElementById('one')

如果您进行了此更改,则无需将其发送到removeComma

如果您保持,则使用以下功能

function removeComma(val) {
    var values = val.value;
    var n=values.replace(/,/, "/"); 
    val.value=n;
}