这是我在这里的第一篇文章,虽然我浏览了很多答案。我遇到一个问题,IE8将继续抛出“对象预期”错误。我使用IE8的开发人员工具,它指向“mymh.js”文件
<script type="text/javascript" src="http://code.jquery.com/jquery-1.7.2.min.js"></script>
<script type="text/javascript" src="/MyMHome/javascript/mymh.js"></script>
mymh.js文件只有以下代码
$(document).ready(function() {
$('#hNumber').focus();
$('#ddlDir').change(function () {
var selVal = $('#ddlDir').val();
if (selVal == 'N' || selVal == 'S' || selVal == 'E' || selVal == 'W'){
$.getJSON('/MyMHome/DimeServlet?strDir='+$('#ddlDir option:selected').val(), function(data) {
$('#ddlSt')
.find('option')
.remove()
.end()
$.each(data, function(i,field){
var name = field;
$('#ddlSt')
.append('<option value= ' + '"' + name + '"' + '>' + name + '</option>');
});
});
$('#ddlSt').focus();
}else{
$('#ddlSt')
.find('option')
.remove()
.end()
.append('<OPTION selected value="">Choose a direction first</OPTION>');
}
})
.trigger('change');
$('#reset').click(function(){
$('#ddlSt')
.find('option')
.remove()
.end()
.append('<OPTION selected value="">Choose a direction first</OPTION>');
$('#hNumber').focus();
});
$('#hNumber').bind('keyup', function() {
if($('#hNumber').val().length == 5){
$('#ddlDir').focus();
}
});
$('#submitQuery').click(function(){
var houseNumber = $('#hNumber').val();
if(houseNumber.replace(/\s+/g, '').length == 0){
alert('Please enter a house number.');
$('#hNumber').focus();
return false;
}else if( (!$.isNumeric(houseNumber)) || houseNumber.indexOf('-') > -1 || houseNumber.indexOf('.') > -1){
alert('Please enter numbers only. You will be prompted later, if the address requires a suffix.');
$('#hNumber').focus();
return false;
}else if(houseNumber < 100 || houseNumber > 12999){
alert('Please enter a house number between 100 and 12999');
$('#hNumber').focus();
return false;
}else if($('#ddlDir option:selected').val() == 'none'){
alert('Please select a street direction.');
$('#ddlDir').focus();
return false;
}
});
$('form').keypress(function(e) {
if (e.keyCode == '13') {
e.preventDefault();
if($('#ddlSt').is(":focus")){
$('#submitQuery').trigger('click');
}
else{
return false;
}
}
});
});
错误指向<script ... mymh.js></script>
,但在调试器中指向$document.ready(function() {
任何人都知道为什么IE8会继续抛出这个错误?
答案 0 :(得分:7)
尝试在第16行的末尾放置分号
这
$('#ddlSt')
.find('option')
.remove()
.end()
$.each(data, function(i,field){
到
$('#ddlSt')
.find('option')
.remove()
.end();
$.each(data, function(i,field){
答案 1 :(得分:4)
$(document).ready(function() { });
由于以下原因,此语句可能会抛出Object Expected错误:
首先,如果我们链接到外部javascript文件(例如jquery-1.8.2.min.js)不正确。确保您的链接位于正确的路径。我将文件保存在“js”文件夹中,并将路径指定为:
<script type="text/javascript" src="js/jquery-1.8.2.min.js"></script>
其次,如果我们将脚本标记写为:
<script type="application/javascript"></script>
而不是
<script type="text/javascript"></script>
答案 2 :(得分:4)
在IE8中使用jQuery 2.0.0时出现此问题。根据jQuery网站“jQuery 2.x不支持Internet Explorer 6,7或8”。用jQuery 1.10.2替换jQuery 2.0.0为我解决了这个问题。
答案 3 :(得分:3)
有点旧帖子但是对于路过的人来说它可能会派上用场,我有同样的问题,我删除了脚本标签中的defer属性。
<script type="text/javascript" defer="defer" src="js/libs/jquery-1.8.3.min.js"></script>
成:
<script type="text/javascript" src="js/libs/jquery-1.8.3.min.js"></script>
这对我有用。
答案 4 :(得分:3)
这可能不相关,但我刚解决了与IE8相同的问题 - 在IE9上运行正常的代码以及IE8上的其他一切都被扼杀了。
答案就像改变
一样简单 <script type="text/javascript" src="/myjavascript.js"></script>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.7.2.min.js"></script>
到
<script type="text/javascript" src="http://code.jquery.com/jquery-1.7.2.min.js"></script>
<script type="text/javascript" src="/myjavascript.js"></script>
...换句话说,首先是JQuery。这解决了我的问题; YMMV。