Javascript 未捕获类型错误:x.replace不是函数。在这变化之前我没有得到
我使用以下几行来更改从用户输入中获取的一些变量的值。 这允许我更改,例如。浮动操作所必需的 va、vcc和consumo是变量Javascript 未捕获类型错误:x.replace不是函数。在这变化之前我没有得到,javascript,jquery,function,typeerror,Javascript,Jquery,Function,Typeerror,我使用以下几行来更改从用户输入中获取的一些变量的值。 这允许我更改,例如。浮动操作所必需的 va、vcc和consumo是变量 consumo = consumo.replace(",","."); va = va.replace(",","."); vcc = vcc.replace(",","."); 然后我决定创建一个函数,用于保存行代码,因此我创建了以下内容: function comaAPunto(n1,n2,n3){ n1 = n1.replace(",",".");
consumo = consumo.replace(",",".");
va = va.replace(",",".");
vcc = vcc.replace(",",".");
然后我决定创建一个函数,用于保存行代码,因此我创建了以下内容:
function comaAPunto(n1,n2,n3){
n1 = n1.replace(",",".");
n2 = n2.replace(",",".");
n3 = n3.replace(",",".");
}
代码现在看起来像
弗吉尼亚州科马普托康苏莫市vcc
但现在,我在运行代码时遇到了这个错误
未捕获类型错误:n1.replace不是函数
你知道为什么吗?当函数内部不起作用,但在函数外部起作用时
应要求,我发布完整代码:
<script>
$(document).ready(function(){
var vcc;
var va;
var consumo;
var r1;
var r2;
$('#calcular').click(calcularvalores);
/*Para seleccionar todos los text box*/
function seleccionar(){
this.select();
}
$('#consumo').click(seleccionar); //Select all text
$('#vcc').click(seleccionar);
$('#a').click(seleccionar);
$('#consumo').keyup(calcularvalores); // WHen user change value
$('#vcc').keyup(calcularvalores);
$('#a').keyup(calcularvalores);
function getvalores(){ //Take what user types
vcc = document.getElementById("vcc").value;
va = document.getElementById("a").value;
consumo = document.getElementById("consumo").value;
}
function valores(){ // Parse it to float
vcc = parseFloat(vcc);
va = parseFloat(va);
consumo = parseFloat(consumo);
}
function verificar(checkthis){ //Check if stil NaN
if (isNaN(checkthis)){
return false;
} else{
return true;
}
}
function comaAPunto(t1,t2,t3){ // Change , to .
t1 = t1.replace(",",".");
t2 = t2.replace(",",".");
t3 = t3.replace(",",".");
}
function calcularvalores(){
getvalores(); // Get user input
comaAPunto(va,vcc,consumo); // <-- Error here tryng to change "," to "."
valores(); // Parsing values to float.
/* Ecuations implemented */
consumo = consumo/1000; //Lo convertimos en mA.
r2 = va/consumo;
r1 = (vcc-va)/consumo;
/* FInish ecuations */
var isok = verificar(va); //Look if user didnt leave it blank or with text inside it.
if(isok){
var isreally = verificar(consumo); //Look if fill blank another space.
if(isreally){
$('#r11').html("<p>"+r1+"</p>"); //Print values if okay
$('#r22').html("<p>"+r2+"</p>");
} else{
$('#r11').html("<p>Ingresa corriente</p>");
$('#r22').html("<p>Ingresa corriente</p>");
}
} else{
$('#r11').html("<p>Calculando</p>");
$('#r22').html("<p>Calculando</p>");
}
}
});
</script>
您应该停止在每个keyup事件上调用calculates函数。这样做是在所有三个输入字段都有值之前调用函数,因此将从其他输入字段传递空字符串 编辑:如果您需要在输入字段上使用keyup事件,请确保在执行函数之前所有字段都具有有效值。我添加了ifconsumo.length==0 | | vcc.length==0 | | va.length==0返回;为此目的
<script>
$(document).ready(function(){
var vcc;
var va;
var consumo;
var r1;
var r2;
$('#calcular').click(calcularvalores);
/*Para seleccionar todos los text box*/
function seleccionar(){
this.select();
}
$('#consumo').click(seleccionar); //Select all text
$('#vcc').click(seleccionar);
$('#a').click(seleccionar);
$('#consumo').keyup(calcularvalores); // WHen user change value
$('#vcc').keyup(calcularvalores);
$('#a').keyup(calcularvalores);
function getvalores(){ //Take what user types
vcc = document.getElementById("vcc").value;
va = document.getElementById("a").value;
consumo = document.getElementById("consumo").value;
}
function valores(){ // Parse it to float
vcc = parseFloat(vcc);
va = parseFloat(va);
consumo = parseFloat(consumo);
}
function verificar(checkthis){ //Check if stil NaN
if (isNaN(checkthis)){
return false;
} else{
return true;
}
}
function comaAPunto(t1,t2,t3){ // Change , to .
t1 = t1.toString().replace(",",".");
t2 = t2.toString().replace(",",".");
t3 = t3.toString().replace(",",".");
}
function calcularvalores(){
getvalores(); // Get user input
if(consumo.length === 0 || vcc.length === 0 || va.length === 0) return;
comaAPunto(va,vcc,consumo); // <-- Error here tryng to change "," to "."
valores(); // Parsing values to float.
/* Ecuations implemented */
consumo = consumo/1000; //Lo convertimos en mA.
r2 = va/consumo;
r1 = (vcc-va)/consumo;
/* FInish ecuations */
var isok = verificar(va); //Look if user didnt leave it blank or with text inside it.
if(isok){
var isreally = verificar(consumo); //Look if fill blank another space.
if(isreally){
$('#r11').html("<p>"+r1+"</p>"); //Print values if okay
$('#r22').html("<p>"+r2+"</p>");
}
else{
$('#r11').html("<p>Ingresa corriente</p>");
$('#r22').html("<p>Ingresa corriente</p>");
}
}
else{
$('#r11').html("<p>Calculando</p>");
$('#r22').html("<p>Calculando</p>");
}
}
});
</script>
听起来你传递到comaAPunto的n1中的任何东西都是空的或未定义的,或者实际上不是字符串。尝试n1.toString.replace?你能发布你的实际代码吗?另外n1=n1.replace。。。不在函数外部设置变量,它只分配给函数的局部变量。这是typescript吗?如果是这样,您需要将参数上的类型定义为字符串。Ie函数comaAPunton1:字符串,n2:字符串,n3:string@Addis更新。谢谢你好,先生,谢谢你的回答和努力。我的目标是页面显示实时变化,所以我发现keyup事件,这样用户就不应该点击任何按钮。这是我创建函数之前的工作代码试着把5、2.5和1放在用户输入字段中,你会看到电阻的值是如何随着空间的变化而变化的。然后,将第二次填充从2.5更改为2.5,您将得到相同的值,因为我将,更改为。在那几行代码中,问题出现了,使它成为一个函数。它没有回来。。。。。。因为我在输入上留下了defalut值。再次感谢。顺便说一句,默认值并不重要,因为它们在任何输入的每个关键点上都被指定。