未捕获的TypeError:Object Indtast CPR-nummeret,der skal valideres。没有方法'呼叫'

时间:2012-12-18 17:38:17

标签: javascript jquery frontend

我正在开发一个新网站,我现在正在测试这些功能。我的代码可以运行,但会返回错误,我不明白也不知道如何解决。

<script type="text/javascript">
var eval = "Indtast CPR-nummeret, der skal valideres.";
$(document).ready(function () {
   $("#showads").html($("#ads").html());
});
function cprToBool(cpr){
    $.get('ajax.php',{ content: cpr }, function(data) {
        eval = data;
        $("#cprinput").val(eval);
        $("#cprinput").blur();
        });
             $("#showads").html($("#ads").html());   
}
function checkSubmit(e)
{
  if(e && e.keyCode == 13)
   {
    cprToBool($("#cprinput").val());
   }
}
</script>

经过调试,我很确定它是

$("#showads").html($("#ads").html());

导致这些错误。它返回

Uncaught TypeError: Object Indtast CPR-nummeret, der skal valideres. has no method 'call' 

这是eval变量的名称。 任何人都明白为什么这样做?

PS。我已经正确地包含了jQuery。

2 个答案:

答案 0 :(得分:1)

将变量的名称从eval更改为其他内容...... eval2没问题。

jQuery库中的某些东西试图使用内置的eval方法而无法完成,因为你用字符串覆盖了它...这是不可调用的。

jQuery多次使用此代码:

window[ "eval" ].call

由于您在全局范围内声明了eval变量,因此window[ "eval" ]被覆盖。如果你在不同的范围内声明它(以某种方式),它不会与jQuery代码冲突,但你将无法再使用该范围内的eval方法。

答案 1 :(得分:0)

这里的答案/评论是正确的,您的覆盖eval已导致其他代码段绊倒。您可以按照建议更改变量名称,尽管更好的建议IMO实际上会有本地化变量;只要您不打算在自己的代码范围内使用eval,覆盖它就会而不是一个no-no而不是一个问题,只要您的变量仅对您的代码可见。