Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [js] setAttribute nie działa w IE
dyktek
post
Post #1





Grupa: Zarejestrowani
Postów: 240
Pomógł: 0
Dołączył: 18.01.2004
Skąd: rzeszów / kraków

Ostrzeżenie: (0%)
-----


Napisałem ostatnio kodzik w js, takie ostatnio popularne gwiazdki do głosowania, wynik działania poza IE widać tutaj problem polega właśnie w IE, nie wiem czemu ten kod nie działa pod tym badziewiem, wydaje mi się że problem tkwi w setAttribute, wie ktoś może jak to ominąć?


  1. <head>
  2. <script type="text/javascript">
  3.  
  4. var g_clear = 'g_white.gif';
  5. var g_fill = 'g_green.gif';
  6. var ile = 5;
  7.  
  8. var x = 29;
  9. var y = 29;
  10.  
  11. function $( id ){
  12. return document.getElementById( id );
  13. }
  14.  
  15. function generuj(){
  16. var iden = $( 'ocena' );
  17.  
  18. for( i = 0; i < ile; i++ ){
  19.  
  20. docBody = $( 'ocena' );
  21. element = document.createElement("img");
  22. element.id = i ;
  23. docBody.appendChild(element);
  24.  
  25. incre = i + 1;
  26.  
  27. element.setAttribute("src", g_clear);
  28. element.setAttribute("width", x);
  29. element.setAttribute("height", y);
  30.  
  31. element.setAttribute("onMouseOver", "zmien('"+incre+"');");
  32.  
  33.  
  34. $('ocena').setAttribute("onMouseOut", "czysc();");
  35.  
  36. }
  37.  
  38. }
  39.  
  40. function zmien(nr){
  41. for(i = 0; i < nr; i++)
  42. $(i).setAttribute("src", g_fill);
  43. }
  44.  
  45. function czysc(){
  46. for( i = 0; i < ile; i++ )
  47. $(i).setAttribute("src", g_clear);
  48. }
  49.  
  50. </script>
  51. </head>
  52. <body onload="generuj();">
  53.  
  54. <div id="ocena"></div>
  55.  
  56. </body>
  57. </html>


właściwie to już sobie poradziłem

trzeba było zrobić taki cuś:

  1. if(navigator.appName == 'Microsoft Internet Explorer'){
  2. element.setAttribute("onmouseover", function zaz(){ zmien(this.name); });
  3. element.setAttribute("onmouseout", function dez(){ czysc(); });
  4. } else {
  5. element.setAttribute("onMouseOver", "zmien('"+incre+"');");
  6. $('ocena').setAttribute("onMouseOut", "czysc();");
  7. }
Go to the top of the page
+Quote Post
Zajec
post
Post #2





Grupa: Zarejestrowani
Postów: 1 086
Pomógł: 8
Dołączył: 10.12.2003

Ostrzeżenie: (0%)
-----


Konstrukcja:
Kod
element.setAttribute("onMouseOver", "zmien('"+incre+"');");
jest niepoprawna i działa chyba tylko w Operze. Nie można traktować wartości zdarzeń jako string!

To co zrobiłeś z wykrywaniem przeglądarki jest też złe. A skąd wiesz, że używana przeze mnie Opera nie przedstawia się akurat jako IE? Zaserwujesz mi kod dla IE, czego przecież nie chciałeś.


Kod, który powinien dzialać wszędzie:
Kod
element.onmouseover=function () { zmien(this.name); };
element.onmouseout=function () { czysc(); };


Ten post edytował Zajec 16.08.2006, 10:56:08
Go to the top of the page
+Quote Post
dyktek
post
Post #3





Grupa: Zarejestrowani
Postów: 240
Pomógł: 0
Dołączył: 18.01.2004
Skąd: rzeszów / kraków

Ostrzeżenie: (0%)
-----


poprawiłem i działa

tylko nie wiem dlaczego w operze nie mozna zaznaczyć ostatniej gwiazdki, wynik tutaj, dzięki za pomoc

Ten post edytował dyktek 16.08.2006, 11:17:48
Go to the top of the page
+Quote Post
Zajec
post
Post #4





Grupa: Zarejestrowani
Postów: 1 086
Pomógł: 8
Dołączył: 10.12.2003

Ostrzeżenie: (0%)
-----


Cytat(dyktek @ 16.08.2006, 12:12 ) *
poprawiłem i działa

tylko nie wiem dlaczego w operze nie mozna zaznaczyć ostatniej gwiazdki, wynik tutaj, dzięki za pomoc

Opera głupieje, ponieważ Twoje oznaczenia "id" rozpoczynają się od cyfry. A to jest niedozwolone wg W3C.
Go to the top of the page
+Quote Post
phpion
post
Post #5





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Pozwalam sobie odswiezyc temat. Mam kod:
  1. var cell8 = row.insertCell(8);
  2. cell8.setAttribute('class', 'green');

Pod Opera oraz FF dziala on poprawnie, natomiast na IE nie koloruje komorki tabeli (klasa green odpowiedzialna jest m.in. za zielone tlo). Wywolanie w ten sposob:
  1. var cell8 = row.insertCell(8);
  2. cell8.class = 'green';

W IE zwraca blad skryptu (na pasku stanu), naotmiast w Operze i FF wogole nie dziala.
Pomoglby ktos w tym problemiku?

Ten post edytował phpion.com 29.10.2006, 16:51:59
Go to the top of the page
+Quote Post
Zajec
post
Post #6





Grupa: Zarejestrowani
Postów: 1 086
Pomógł: 8
Dołączył: 10.12.2003

Ostrzeżenie: (0%)
-----


Cytat(phpion.com @ 29.10.2006, 16:49:56 ) *
Pod Opera oraz FF dziala on poprawnie, natomiast na IE nie koloruje komorki tabeli

Eh, wybić tych od M$ :-|

Spróbuj
Kod
cell8.className = 'green';
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 12:48