Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Problem z poprawnym działaniem skryptu na Chrome
blackstone
post 4.04.2018, 17:51:23
Post #1





Grupa: Zarejestrowani
Postów: 98
Pomógł: 0
Dołączył: 19.03.2015

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


Robię konwenter jednostek w oparciu o javscript i jquery i mam problem z działaniem pewnej elementarnej dla całego konceptu funkcji w przeglądarce chrome ( na edge i firefox działa bez zarzutu). Funkcja działa w ten sposób że nadpisuje pewien wybrany element html o informację którą zamieszcza w nazwie klasy elementu.

wzór funkcji

  1.  
  2. function nadpisz(curs,zm)
  3. {
  4.  
  5.  
  6.  
  7. $(curs).removeClass() ;
  8. $(curs).addClass(zm) ;
  9.  
  10.  
  11.  
  12.  
  13. }
  14.  
  15. // przykład użycia nadpisz('#example','xyz') ; <- czyli element html o id example otrzyma klasę xyz a jeśli miał wcześniej inną to zostanie ona skasowana
  16.  


Problem polega na tym że Chrome w jednym miejscu mi tą funkcję wykonuję ( przy wyborze jednostki docelowej na którą chce zkonwertować jakąś liczbę ) ale już nie chce z nie wiadomych przyczyn tego zrobić w innym miejscu ( w którym wybiera się jednostkę pierwotną z której liczba ma być konwertowana).

kod html dla wadliwej (w chrome) części

  1. <select id="unit2" >
  2. <option>Jednostki wagi</option>
  3. <option onclick="nadpisz('#weight #unit2','lb')">Funt[lb]</option>
  4. <option onclick="nadpisz('#weight #unit2','oz')">Uncja[oz]</option>
  5. <option onclick="nadpisz('#weight #unit2','gr')">Gram</option>
  6. <option onclick="nadpisz('#weight #unit2','dec')">Decagram</option>
  7. <option onclick="nadpisz('#weight #unit2','kg')">kilogram</option>
  8. <option onclick="nadpisz('#weight #unit2','tona_euro')">tona_euro</option>
  9. <option onclick="nadpisz('#weight #unit2','tona_usa')">tona_usa</option>



oraz dla tej co działa

  1. <div id="center">
  2. <br><span onclick="nadpisz('#weight #center','lb')">Funt[lb]</span>
  3. <br><span onclick="nadpisz('#weight #center','oz')">Uncja[oz]</span>
  4. <br><span onclick="nadpisz('#weight #center','gr')">Gram</span>
  5. <br><span onclick="nadpisz('#weight #center','dec')">Decagram</span>
  6. <br><span onclick="nadpisz('#weight #center','kg')">kilogram</span>
  7. <br><span onclick="nadpisz('#weight #center','tona_euro')">tona_euro</span>
  8. <br><span onclick="nadpisz('#weight #center','tona_usa')">tona_usa</span>
  9. </div>



Jak dogodzić produktowi firmy google, bo nie mam pojęcie dlaczego tak grymasi podczas gdy na innych przeglądarkach wszystko chula. Dzięki z góry za info.

Go to the top of the page
+Quote Post
trueblue
post 4.04.2018, 17:58:50
Post #2





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

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


Na stronie jest jeden element o id=weight?


--------------------
Go to the top of the page
+Quote Post
blackstone
post 4.04.2018, 18:18:35
Post #3





Grupa: Zarejestrowani
Postów: 98
Pomógł: 0
Dołączył: 19.03.2015

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


Tak. Gdyby było kilka wiem że jqery by się gubił, tylko że jeden div jest w samym Chrome dobrze nadpisywany, a ten drugi nie wiadomo czemu nie reaguje.
Go to the top of the page
+Quote Post
trueblue
post 4.04.2018, 18:21:12
Post #4





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

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


To wrzuć fragment HTML i JS na https://jsfiddle.net/

Przy okazji:
1. Skoro korzystasz z jQuery, to zdarzenia możesz podpinać w inny sposób.
2. Wystarczy $(curs).attr('class', zm) zamiast tych dwóch linijek. Co się sprowadza do tego, że funkcja nadpisz nie jest potrzebna.


--------------------
Go to the top of the page
+Quote Post
blackstone
post 5.04.2018, 18:52:37
Post #5





Grupa: Zarejestrowani
Postów: 98
Pomógł: 0
Dołączył: 19.03.2015

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




Dzięki za pomoc w szukaniu odpowiedzi ale ją znalazłem i okazała się być banalna lecz utwierdziła mnie tylko w przekonaniu że wolę backend od frontendu smile.gif . Niewiedzieć czemu problemem okazał się być dla Chroma znacznik select - zmieniłem na div o danym id i jquery prawidłowo mi go nadpisuje. Ale znacznika select za nic.



"Wystarczy $(curs).attr('class', zm) zamiast tych dwóch linijek. Co się sprowadza do tego, że funkcja nadpisz nie jest potrzebna " - Nie, ponieważ jeżeli klient zmieni jednostkę miary której oznaczenie jest zapisywane w klasie to system zwariuje. Najpierw trzeba usunąć choćby prewencyjnie starą klasę a potem dodać nową ( bo i naczej w artybucie class znajdą się np "kg tona" )


Go to the top of the page
+Quote Post
trueblue
post 5.04.2018, 19:33:36
Post #6





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

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


Najlepiej jakbyś <select> obsłużył zdarzeniem change, a nie click na każdą opcję.

A wiesz co robi funkcja attr('class', zm)? Ustawia klasę o wartości zmiennej zm, więc nic nie trzeba czyścić.


--------------------
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 28.03.2024 - 22:13