Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript] Nie działa pod IE :/
Forum PHP.pl > Forum > Przedszkole
bilskij
Witam!

Mam taki oto skrypt:

[JAVASCRIPT] pobierz, plaintext
  1. var zdjecia = new Array("foto1", "foto2", "foto3", "foto4", "foto5", "foto6",
  2. "foto7", "foto8", "foto9", "foto10", "foto11", "foto12",
  3. "foto13", "foto14");
  4.  
  5. const MINI = "images/pict/";
  6. const SEC = 1000;
  7. const ZMIANA = 5*SEC;
  8. var zaladowane = new Array();
  9. var zaladowano = 0;
  10. var zmiana = 100/zdjecia.length;
  11. var elements = document.getElementsByClassName("foto");
  12.  
  13. var interval = 0;
  14.  
  15. function laduj(){
  16. for(var i in zdjecia){
  17. zaladowane[i] = new Image();
  18. zaladowane[i].src = MINI + zdjecia[i] + ".jpg";
  19. zaladowane[i].onload = zmienPasek;
  20. }
  21. }
  22.  
  23. function zmienPasek(){
  24. zaladowano++;
  25.  
  26. document.getElementById("pasek").style.width = zaladowano*zmiana+"%";
  27. if(zaladowano == zdjecia.length){
  28. document.getElementById("info").innerHTML = "";
  29. document.getElementById("foto_last").style.background = "url(images/bcg_foto.gif) no-repeat";
  30. for(var i=0; i<elements.length; i++){
  31. elements[i].style.background = "url(images/bcg_foto.gif) no-repeat";
  32. }
  33. gotowe();
  34. }
  35. }
  36.  
  37. function losuj(ilosc){
  38. var tab = new Array();
  39. for(var i=0; i<ilosc; i++){
  40. tab[i] = Math.floor(Math.random()*zdjecia.length);
  41. var j = i;
  42. while(tab[j-1] >= 0){
  43. if(tab[j-1] == tab[i]){
  44. tab[i] = Math.floor(Math.random()*zdjecia.length);
  45. j=i;
  46. }else{
  47. j--;
  48. }
  49. }
  50. }
  51. return tab;
  52. }
  53.  
  54. function uaktualnij(img){
  55. var nowe = losuj(img.length);
  56. for(var i in img){
  57. img[i].src = MINI + zdjecia[nowe[i]] + ".jpg";
  58. }
  59. }
  60.  
  61. function startInterval(img){
  62. interval = setInterval(function(){uaktualnij(img);}, ZMIANA);
  63. }
  64.  
  65. function gotowe(){
  66. var table = document.getElementById("fot");
  67. var img = table.getElementsByTagName("img");
  68. uaktualnij(img);
  69. startInterval(img);
  70. }
  71.  
  72. window.onload = function() {
  73. laduj();
  74. }
[JAVASCRIPT] pobierz, plaintext



działa on na zasadzie pobierania zdjęć oraz wyświetlania ich co 5 sekund. Niestety pod IE w wersji 8 nie dziala i pokazuje blad w 5 linijce :/ Pomozecie o co chodzi tej durnej przegladarce questionmark.gif We wszystkich innych wyswietla sie poprawnie.
mortus
Zdaje się, że w JavaScript dla IE nie ma czegoś takiego, jak stałe (const). Sprawdź tutaj.
Zrób z MINI zmienną (var).
bilskij
Teraz natomiast widzi problem w 11 linijce kodu
nospor
document.getElementsByClassName raczej nie istnieje w IE.

bilskij
Ehh :/ To jak proponujecie rozwiazac ten problem ?
nospor
Użyj np. jQuery
bilskij
Czyli IE nie radzi sobie z JavaScript ? Nawet z tak podstawowymi komendami ? jQuery bede musial sie uczyc od nowa aby przepisac w tym frameworku ten kod. Na pewno nie ma jakiegos rozwiazania ? smile.gif
Fifi209
Za czas kiedy prosisz o rozwiązanie, dawno byś przepisał na jQuery.
nospor
Cytat
Nawet z tak podstawowymi komendami

document.getElementsByClassName nie jest standardową funkcją js tylko wymysłem FF.
bilskij
Ale trzeba przepisac caly kod w jquery ?
luck
Sprawdziłeś chociaż, do czego jQuery służy? Na początek możesz go użyć do wybrania odpowiednich elementów z modelu DOM, zamiast korzystać z wynalazków typu getElementsByClassName.
bilskij
Czyli moge jedynie linijke z document.getElementsByClassName zastapic napisana w jezyku jquery i powinno ze soba wspolpracowac ? Oczywiscie dodatkowo zalaczajac frameworka do pliku html ?
kamil4u
Co Wy ... wygadujecie? wink.gif

Cytat
document.getElementsByClassName nie jest standardową funkcją js tylko wymysłem FF.

Nie pamiętam dokładnie, ale bardzo możliwe, że FF zapoczątkował tę funkcję. Ale to( http://www.quirksmode.org/dom/w3c_core.html#t11 ) świadczy o tym, że to nie "wymysł" FF, a zacofanie IE.

Dla IE, jeżeli nie chcesz korzystać z jQuery, wystarczy: http://javascript.about.com/library/bldom08.htm

Jak już pisałem, moim zdaniem jQuery jest dobre, ale tylko przy dużych projektach, a nie przy kilku linkowym skrypcie.
nospor
Ciekawe jak ta tabelka wyglądała parę lat temu wink.gif
No ale dobra, niech będzie zacofanie IE - i tak nie jestem zwolennikiem tej przeglądarki.

Cytat
Dla IE, jeżeli nie chcesz korzystać z jQuery, wystarczy: http://javascript.about.com/library/bldom08.htm
Polać mu... miodku - dobrze prawi smile.gif

Cytat
Jak już pisałem, moim zdaniem jQuery jest dobre, ale tylko przy dużych projektach, a nie przy kilku linkowym skrypcie.
Ja tam i przy kilku linijkowym kodzie używam. Z reguły szybko te kilkulinijkowe kody się przekształcają w coś więcej a i lepiej ćwiczyć pisanie w danym libie smile.gif
kamil4u
Cytat
Ciekawe jak ta tabelka wyglądała parę lat temu wink.gif

Proszę:
- 13.09.2008 - http://web.archive.org/web/20080913123711/...m/w3c_core.html
- 16.10.2009 - http://web.archive.org/web/20091016205725/...m/w3c_core.html

Przeglądarki z "tamtych lat" i tak dla nas powinny nie istnieć... no właśnie powinny...

Cytat
Ja tam i przy kilku linijkowym kodzie używam. Z reguły szybko te kilkulinijkowe kody się przekształcają w coś więcej a i lepiej ćwiczyć pisanie w danym libie smile.gif
Każdy woli co innego. Akurat JS jest moim ulubionym językiem, więc lubię się pobawić w "czystej odmianie" i, z reguły, w ogóle nie używam żadnych bibliotek, a część funkcjonalności jQuery gdzieś, kiedyś już napisałem smile.gif

Inna kwestia, że na razie robię to głównie hobbistycznie, więc nie zależy mi aż tak na czasie tongue.gif
bilskij
Obecnie zauważyłem, że kod czasem działa czasem się wiesza. Mianowicie zdjęcia nie wyświetlają się lub zacina się podczas ładowania. Gdy się zatnie i odświeżę stronę to zawsze po tym zaczyna działać lecz gdy odpale link jeszcze raz z paska przegladarki to lubi się zawiesic. Już sam nie wiem o co chodzi. Nie pokazuje żadnych błędów.

[JAVASCRIPT] pobierz, plaintext
  1. document.getElementsByClassName = function(cl) {
  2. var retnode = [];
  3. var myclass = new RegExp('\\b'+cl+'\\b');
  4. var elem = this.getElementsByTagName('*');
  5. for (var i = 0; i < elem.length; i++) {
  6. var classes = elem[i].className;
  7. if (myclass.test(classes)) retnode.push(elem[i]);
  8. }
  9. return retnode;
  10. };
  11.  
  12. var zdjecia = new Array("foto1", "foto2", "foto3", "foto4", "foto5", "foto6",
  13. "foto7", "foto8", "foto9", "foto10", "foto11", "foto12",
  14. "foto13", "foto14");
  15.  
  16. var MINI = "images/pict/";
  17. var SEC = 1000;
  18. var ZMIANA = 5*SEC;
  19. var zaladowane = new Array();
  20. var zaladowano = 0;
  21. var zmiana = 100/zdjecia.length;
  22. var elements = document.getElementsByClassName('foto');
  23.  
  24. var interval = 0;
  25.  
  26. function laduj(){
  27. for(var i in zdjecia){
  28. zaladowane[i] = new Image();
  29. zaladowane[i].src = MINI + zdjecia[i] + ".jpg";
  30. zaladowane[i].onload = zmienPasek;
  31. }
  32. }
  33.  
  34. function zmienPasek(){
  35. zaladowano++;
  36. var elements = document.getElementsByClassName('foto');
  37. document.getElementById("pasek").style.width = zaladowano*zmiana+"%";
  38. if(zaladowano == zdjecia.length){
  39. document.getElementById("info").innerHTML = "";
  40. document.getElementById("foto_last").style.background = "url(images/bcg_foto.gif) no-repeat";
  41. for(var i=0; i<elements.length; i++){
  42. elements[i].style.background = "url(images/bcg_foto.gif) no-repeat";
  43. }
  44. gotowe();
  45. }
  46. }
  47.  
  48. function losuj(ilosc){
  49. var tab = new Array();
  50. for(var i=0; i<ilosc; i++){
  51. tab[i] = Math.floor(Math.random()*zdjecia.length);
  52. var j = i;
  53. while(tab[j-1] >= 0){
  54. if(tab[j-1] == tab[i]){
  55. tab[i] = Math.floor(Math.random()*zdjecia.length);
  56. j=i;
  57. }else{
  58. j--;
  59. }
  60. }
  61. }
  62. return tab;
  63. }
  64.  
  65. function uaktualnij(img){
  66. var nowe = losuj(img.length);
  67. for(var i in img){
  68. img[i].src = MINI + zdjecia[nowe[i]] + ".jpg";
  69. }
  70. }
  71.  
  72. function startInterval(img){
  73. interval = setInterval(function(){uaktualnij(img);}, ZMIANA);
  74. }
  75.  
  76. function gotowe(){
  77. var table = document.getElementById("fot");
  78. var img = table.getElementsByTagName("img");
  79. uaktualnij(img);
  80. startInterval(img);
  81. }
  82.  
  83. window.onload = function() {
  84. laduj();
  85. }
[JAVASCRIPT] pobierz, plaintext
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.