在JavaScript中用斜杠替换逗号

在JavaScript中用斜杠替换逗号,javascript,Javascript,我试图用JavaScript中的/替换,,并将代码写在下面。表单中有多个文本框可用。我想编写一个函数并在所有文本字段上调用它们 我遇到的问题是无法将当前ID发送到JavaScript方法。这是如何正确完成的 function removeComma(val) { var values = document.getElementById('val').value; //Object Required Error var n=values.replace(/,/, "/"); do

我试图用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)">
函数removeComma(val){
var values=document.getElementById('val').value;//对象必需错误
var n=值。替换(/,/,“/”);
document.getElementById('val')。value=n;
}
我从上面的代码中得到的错误是第一行的
objectrequired

document.getElementById('val')
应该是

document.getElementById('one')
如果进行此更改,则无需将其发送到removeComma

如果保留此项,则使用以下功能

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

document.getElementById('one')
如果进行此更改,则无需将其发送到removeComma

如果保留此项,则使用以下功能

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

document.getElementById(val).value
。。。相反,您可能会分别为每个输入文本框调用此函数,将其ID作为参数发送到函数中

更新:。。。您的编辑清楚地显示了事实并非如此:您正在将元素本身传递到函数中。这很好,但是您不必使用
document.getElementById
来管理该元素—您已经拥有了它

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

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

function removeComma(el) {
  el.value = el.value.replace(/,/g, '/');
}
这是一个可以玩的游戏(这是它与处理程序的合作——在我看来,后者更流畅)。

它应该是

document.getElementById(val).value
。。。相反,您可能会分别为每个输入文本框调用此函数,将其ID作为参数发送到函数中

更新:。。。您的编辑清楚地显示了事实并非如此:您正在将元素本身传递到函数中。这很好,但是您不必使用
document.getElementById
来管理该元素—您已经拥有了它

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

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

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

这是一个可以使用的方法(这是处理程序的方法,我认为后者更平滑)。

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

function removeComma(val) {
    var values = val.value;
    var n=values.replace(/,/g, "/"); 
    val.value=n;
}
还请注意,
onkeypress
input
元素的值更改之前被触发。如果要使用上次更新的
输入值,可以使用
onkeyup
oninput

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

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

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

function removeComma(val) {
    var values = val.value;
    var n=values.replace(/,/g, "/"); 
    val.value=n;
}
还请注意,
onkeypress
input
元素的值更改之前被触发。如果要使用上次更新的
输入值,可以使用
onkeyup
oninput

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

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

它只适用于一个输入。我想将ID作为参数传递。如果我有多个输入,那么如何对多个输入使用相同的函数。Teemu回答中的复制粘贴很好。:D我真的必须说它不是复制/粘贴。我只是用val替换document.getElementById('val')。它只适用于一个输入。我想将ID作为参数传递。如果我有多个输入,那么如何对多个输入使用相同的函数。Teemu回答中的复制粘贴很好。:D我真的必须说它不是复制/粘贴。我只是用val替换document.getElementById('val')。它已经存在了。var values=document.getElementById('val')。value
'val'
是一个字符串
val
是一个表达式,用于计算名为
val
的变量的值。在本例中,使用字符串文字没有任何意义。@raina77ow的fiddle是最可重用的方法。全球旗帜是一个重要的补充。@raina77ow非常感谢您的描述。它帮助我学到了一些新东西。再次感谢。它已经在那里了。var values=document.getElementById('val')。value
'val'
是一个字符串
val
是一个表达式,用于计算名为
val
的变量的值。在本例中,使用字符串文字没有任何意义。@raina77ow的fiddle是最可重用的方法。全球旗帜是一个重要的补充。@raina77ow非常感谢您的描述。它帮助我学到了一些新东西。再次感谢。