3

これは私の最初の投稿ですが、答えを探すためにSOをたくさん閲覧しています。IE8 が "Object Expected" エラーをスローし続けるという問題が発生しています。私は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がそのエラーをスローし続けるのか、誰かが間違っていると思いますか?

4

5 に答える 5

7

16行目の最後にセミコロンを置いてみてください

から

$('#ddlSt')
.find('option')
.remove()
.end()

$.each(data, function(i,field){

$('#ddlSt')
.find('option')
.remove()
.end();

$.each(data, function(i,field){
于 2012-05-09T23:21:58.447 に答える
4

IE8 で jQuery 2.0.0 を使用すると、この問題が発生しました。jQuery サイトによると、「jQuery 2.x は Internet Explorer 6、7、または 8 をサポートしていません」。jQuery 2.0.0 を jQuery 1.10.2 に置き換えると、この問題が解決されました。

于 2013-10-17T19:48:49.090 に答える
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 タグを次のように記述した場合:

<script type="application/javascript"></script>  

それ以外の

<script type="text/javascript"></script> 
于 2012-11-01T21:51:17.523 に答える
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。

于 2013-08-23T09:52:23.527 に答える
3

少し古い投稿ですが、通りすがりの人にとっては便利かもしれません。私は同じ問題を抱えていました。script タグの 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>

それは私のために働いた。

于 2013-03-18T14:30:52.593 に答える