Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
&引用;未捕获类型错误:对象不是函数;在JavaScript中_Javascript_Function - Fatal编程技术网

&引用;未捕获类型错误:对象不是函数;在JavaScript中

&引用;未捕获类型错误:对象不是函数;在JavaScript中,javascript,function,Javascript,Function,我很难理解为什么这不起作用。我的表单上有两个字段,当我单击一个按钮时,另一个文本字段值将更改为该函数的值。我怎样才能让它工作 function calculate() { var odometerStart = parseFloat (document.getElementById('odometerStart').value); var odometerEnd = parseFloat(document.getElementById('odometerEnd').value);

我很难理解为什么这不起作用。我的表单上有两个字段,当我单击一个按钮时,另一个文本字段值将更改为该函数的值。我怎样才能让它工作

function calculate()
{
    var odometerStart = parseFloat (document.getElementById('odometerStart').value);
    var odometerEnd = parseFloat(document.getElementById('odometerEnd').value);
    var distance = document.getElementById('distance');
    var amount = document.getElementById('amount');

    distance.value = odometerEnd - odometerStart;       
}

var val = $("#taskentry").validate({
    rules: {
        tripDate: {required: true}
        tripContact: {required: true}
        odometerStart: {required: true}     
    }
});


Odometer: Start <input type="number" name="odometer[Start]" id="odometerStart" min="0" max="999999" placeholder="0" class="required"/><br/>
Odometer: End <input type="number" name="odometer[End]" id="odometerEnd" min="0" max="999999" placeholder="999999" class="required"/><br/>
Comments <textarea name="comments" id="comments" rows="2" cols="2"></textarea><br/>
Distance <input type="text" name="distance" id="distance" value="" placeholder="0.00"/><br/>
<input type="button" name="calculate" value="Calculate" onclick="calculate()"/>
函数计算()
{
var odometerStart=parseFloat(document.getElementById('odometerStart').value);
var odometrend=parseFloat(document.getElementById('odometrend').value);
var distance=document.getElementById('distance');
var amount=document.getElementById('amount');
distance.value=里程计趋势-里程计开始;
}
var val=$(“#任务条目”).validate({
规则:{
tripDate:{required:true}
tripContact:{required:true}
odometerStart:{必需:true}
}
});
里程表:启动
里程表:结束
评论
距离

我正在使用开发者工具在Google Chrome中调试这个程序,在计算按钮所在的位置出现错误“uncaught TypeError:Object不是函数”。

也许您需要逗号:

var val = $("#taskentry").validate({
    rules: {
        tripDate: {required: true},
        tripContact: {required: true},
        odometerStart: {required: true}     
    }
});

很抱歉,你的问题和我的答案之间存在巨大差距:) 我也遇到了同样的问题,并找到了原因——浏览器会根据页面中html标记的ID属性自动填充对象。 简单测试

<div id='test'>Just testing</div>
<script type='text/javascript'>
alert(test.innerHTML);
</script> 
只是测试
警报(test.innerHTML);
在您的例子中,有一个id='calculate'的元素,请重命名它或重命名用于计算的函数。

在我的例子中,我有

当我调用javascript函数
register()
时,会得到同样的警告,我猜它与
input
标记中的
id
title
属性冲突,所以我只是将此函数改为另一个名称,例如
signup()
,它可以正常工作


我希望这能有所帮助

我创建的一个函数出现了这个问题,它与Firefox完美配合,而Chrome和Safari则出现了这个错误。解决方案:更改函数的名称。原始名称为
expand(target)
,替换为expand\u compress(target)。它成功了。我想函数
expand()
存在于Firefox之外的其他地方,他说你有语法错误。逗号分隔对象的属性,因此请保留这些逗号。如果询问者说它不起作用,为什么会将其标记为正确答案?您的代码可以工作。这里有一把小提琴来证明这一点:JSLint上没有任何内容,也没有返回异常——都有相同的问题,这是我的修复方法。直到现在,我才知道这种浏览器行为!如果我知道这一点,我就不需要太多的document.getElementById()。您可能需要注意为什么更改很重要。您可能有一个id为“expand”的html标记