我正在开发一个新网站,我现在正在测试这些功能。我的代码可以运行,但会返回错误,我不明白也不知道如何解决。
<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。
答案 0 :(得分:1)
将变量的名称从eval
更改为其他内容...... eval2
没问题。
jQuery库中的某些东西试图使用内置的eval
方法而无法完成,因为你用字符串覆盖了它...这是不可调用的。
jQuery多次使用此代码:
window[ "eval" ].call
由于您在全局范围内声明了eval
变量,因此window[ "eval" ]
被覆盖。如果你在不同的范围内声明它(以某种方式),它不会与jQuery代码冲突,但你将无法再使用该范围内的eval
方法。
答案 1 :(得分:0)
这里的答案/评论是正确的,您的覆盖eval
已导致其他代码段绊倒。您可以按照建议更改变量名称,尽管更好的建议IMO实际上会有本地化变量;只要您不打算在自己的代码范围内使用eval
,覆盖它就会多而不是一个no-no而不是一个问题,只要您的变量仅对您的代码可见。