2013-03-13 7 views
7

Ich habe eine Funktion, die ich benutze, um einige Textausgabe mit einer Schaltfläche oder ausverkauften Etikett entsprechend zu ersetzen.JQuery Dokument bereit Funktion funktioniert nicht in IE

jQuery(document).ready(function() { 
jQuery('td.register').each(function() { 
    var text = jQuery(this).text(); 
    var exploded = text.split(','); 
    console.log(exploded[0]); 
    console.log(exploded[1]); 
    if (exploded[0] == 0) { 
     jQuery(this).html("<font color='red'>SOLD OUT</font>"); 
    } else { 
     jQuery(this).html("<a class='button' title ='Register for this event' href='" + exploded[1] + "'>Register</a>"); 
    } 
}) 
}); 

Es scheint auf den meisten Browsern zu funktionieren, aber der Client in IE9 beschwert es nicht funktioniert hat. Wenn ich es auf meinem Computer teste, funktioniert es die meiste Zeit, aber manchmal nicht, und alle Zeit ich es auf browsershots.org testen, es funktioniert nicht. Es zeigt sich in browsershots.org Tests, als ob die jQuery nicht einmal ausgeführt wurde.

+2

Es ist, weil Sie 'console.log verwenden()', die in IE9 verfügbar ist [nur, wenn die Entwickler-Tools sind offen] (http: // stackoverflow.com/questions/5472938/does-ie9-support-console-log-and-is-it-a-real-function). Entferne einfach diese Zeilen und es sollte funktionieren. – JJJ

+1

Und als eine Randnotiz möchten Sie vielleicht sicherstellen, dass der Inhalt in Ordnung aussieht und vorzugsweise funktioniert, auch wenn JavaScript deaktiviert ist. – JJJ

+0

Ich fand das von Googling "Dokument bereit Funktion funktioniert nicht im Internet Explorer". Aber ich frage mich, wie ich dieses Problem selbst entdeckt haben könnte? Wie hätte ich es aufspüren können? Als Randnotiz hatte ich einige Probleme auf einer AJAX-Seite und entdeckte dann die 'ajaxComplete'-Funktion. –

Antwort

7

Konsole ist nicht definiert in IE9 Ihren Code modifizieren wie

jQuery(document).ready(function() { 
jQuery('td.register').each(function() { 
    var text = jQuery(this).text(); 
    var exploded = text.split(','); 
    if(typeof(console)!='undefined'){ 
     console.log(exploded[0]); 
     console.log(exploded[1]); 
    } 
    if (exploded[0] == 0) { 
     jQuery(this).html("<font color='red'>SOLD OUT</font>"); 
    } else { 
     jQuery(this).html("<a class='button' title ='Register for this event' href='" + exploded[1] + "'>Register</a>"); 
    } 
}) 
}); 
+0

Ich kann nicht glauben, dass es war. Und der Grund, warum ich es nicht reproduzieren konnte, ist das, was Juhana oben gesagt hat - es funktioniert, wenn Dev-Tools geöffnet sind. Vielen Dank! –

+0

IE macht so etwas mit dir ';)', froh, dass Ihr Problem gelöst – dakait

+0

half mir zu verstehen IE9 hat keine Konsole. Konnte nicht herausfinden, warum mein Code nicht funktionierte, während die ganze Zeit von der Konsole verursacht wurde;) Danke, +1 – Ben