2011-01-10 15 views
5

Ich habe dieses Javascript Quiz: http://utbm.trunat.fr/CIP/quiz/Warum lädt mein JQuery nicht auf IE?

Es funktioniert auf normalen Browser, aber lädt nicht einmal mit Internet Explorer.

Es scheint, dass es die initQuiz() Funktion nicht erkennt.

Haben Sie eine Idee, wie ich das beheben kann?

+0

Meldung: Unerwarteter Aufruf des Methoden- oder Eigenschaftszugriffs. Line: 113 Char: 460 Code: 0 URI: http://utbm.trunat.fr/CIP/quiz/js/jquery-1.4.4.min.js Nachricht: Objekt nicht unterstützt diese Eigenschaft oder Methode Line: 110 Char: 6 Code: 0 URI: http://utbm.trunat.fr/CIP/quiz/js/start-quiz.js – simon

+1

ich liebe, wie gibt es zwei Kategorien von Browsern : normale Browser und IE. –

Antwort

10
  • Internet Explorer nicht akzeptieren, das Komma:

    question = {'texte': $(this).attr("texte"), 
        'sound': $(this).attr("sound"),} 
    
  • Offenbar ein weiterer Fehler von dieser Linie kommt:

    $('title').html(QUIZ_TITLE[lang]); 
    

    Schaltet you can't set the title like that in IE aus. Verwenden Sie stattdessen document.title = QUIZ_TITLE[lang].

  • Ein dritter Fehler ist, dass Sie eine neue Variable, question, ohne das Schlüsselwort var einführen, was ein Fehler in IE ist. Sie tun es später wieder, in response. Aktualisieren Sie Ihre loadXML als solche:

    function loadXML(xml) { 
        $(xml).find("question").each(function() { 
        var question = {'texte': $(this).attr("texte"), 'sound': $(this).attr("sound")}; 
    
         reponses = []; 
         $(this).find('carre').find('reponse').each(function() { 
         var reponse = {'texte': $(this).text(), 'sound': $(this).attr("sound"), 'bonne': false}; 
         if($(this).attr('bonne') == "vrai") reponse['bonne'] = true;    
         reponses.push(reponse); 
        }); 
    
        question['reponses'] = reponses; 
        questions.push(question); 
        }); 
        startGame(questions); 
    } 
    
  • Eine vierte Fehler ist in der Art und Weise Sie überprüfen, ob eine Antwort richtig ist.

    if($(this).attr('data-type') == 'true') 
    

    Sie vergleichen den Wert des data-type Attribut auf den String-Wert "true", aber wenn Sie den Wert zuweisen , stellen Sie es auf den Booleschen Wert true:

    $('#r'+(i+1)+'input').attr('data-type', r.bonne); 
    

    Um sicherzustellen, dass Wenn Sie beispielsweise String-Werte vergleichen, können Sie den Wert beispielsweise folgendermaßen festlegen:

+0

Ok, danke, es gibt einen anderen Fehler, denke ich? – Natim

+0

Ist es möglicherweise die '$ (this) .attr ('sound')' wenn kein Sound definiert ist, der einen Fehler verursacht? – Natim

+0

Dieser Fehler war in 'loadXML (xml)'. Es verhinderte, dass "loadXML" und möglicherweise andere Funktionen ausgeführt wurden. Bis es korrigiert wurde, ist es schwierig zu sagen, ob es andere Fehler gibt oder nicht. –

Verwandte Themen