Funkcja podmieniająca kolory

1

Czy moze ktoś przetestować metodę którą wymyśliłem?

Ma ustawiać kolor elementu i tło bez uzywania backgroundColor i style color..

To jest coś takiego

// wyszukujemy wszystkie elementy w dokumencie
lista=document.querySelectorAll("*");

// jedziemy po wszystkich
for(let u=0;u<lista.length;u++){

//jesli istnieje atrybut style 
if (lista[u].hasAttribute("style")) {


//usuwamy spacje z atrybutu jak jest "background-color: white;" to zamieniamy na "background-color:white;"
tmp=lista[u].attributes.getNamedItem("style").value.replace("background-color: ","background-color:");
tmp2=tmp.replace("color: ","color:");
lista[u].attributes.getNamedItem("style").value=tmp2;

//pobieramy kolor i tworzymy w obiekcie właściwość "xbgcolor" która wygląda tak "background-color:kolor;"
tmp=lista[u].style.backgroundColor;
lista[u].xbgcolor="background-color:"+tmp+";";

// to samo powtarzamy z kolorem  , wlasciwosc sie nazywa "xcolor" i wygląda tak "color:kolor;"
tmp=lista[u].style.color;
lista[u].xcolor="color:"+tmp+";";};};

// od tej pory  funkcja set_color (obiekt, kolor tła, kolor tekstu) powinna podmieniac nam wartosci
function set_color(obiekt,bgcolor,color){new_xbgcolor="background-color:"+bgcolor+";";new_xcolor="color:"+color+";";tmp=obiekt.attributes.getNamedItem("style").value.replace(obiekt.xbgcolor,"background-color:"+bgcolor+";");tmp2=tmp.replace(obiekt.xcolor,"color:"+color+";");obiekt.attributes.getNamedItem("style").value=tmp2;obiekt.xbgcolor=new_xbgcolor;obiekt.xcolor=new_xcolor;};

xD
jakby ktos potestowal by bylo super.
Albo sugestie jak to podrasowac albo co fajnego dodac.

2

Ja bym to zrobił tak:

Po pierwsze użyj jakiegoś frameworka vue, react, angular, svelte.

Dobra druga rzecz dodaj sobie style CSS.
Czyli zrób np. jakiś motyw .class tam dodaj kolory itp.
A potem za pomocą Javascript po prostu dodaj atrybut class z daną nazwą, a on odziedziczy wygląd, ręczne robienie background-color itp. to mega źle wygląda i potem ciężko zmienić coś.

Zrób po prostu klasę w CSS, dodaj tam wszystko, a za pomocą javascript po prostu dodaj tą klasę :>

0

Czemu "to mega źle wygląda i potem ciężko zmienić coś"? Przeciez uzywam funkcji w odniesieniu do wszystkich obiektów w dokumencie. Możliwości są nieograniczone mi się wydaje, to jest najbardziej banalne użycie jakie da się zrobić. jedna pętla (+querySelectorAlll) i zmieniam co chce. Potem zmiany są błyskawiczne i mega precyzyjne.

3

Ten kod wydaje się robieniem naokoło czegoś prostego aż do stopnia, że nie wiadomo, co to robi tak naprawdę.

getNamedItem

ciekawe, nie wiedziałem o istnieniu takiej metody w DOM.
Z drugiej strony jakoś nie kumam zastosowania tej metody tutaj.
po co w ogóle odwołujesz się do atrybutu style, żeby złapać stringa ze stylem zamiast normalnie element.style.backgroundColor?

i po co zamieniasz na żywca stringa ze stylem? Robisz własny preprocesor CSS, coś jak Sass, tylko dynamicznie? Czy o co biega? Mam WTFa.

Ma ustawiać kolor elementu i tło bez uzywania backgroundColor i style color..

No dobra, ale... po co? Słyszałeś o klasach w CSS?

0

@LukeJL:
"i po co zamieniasz na żywca stringa ze stylem? " widziałeś na YouTube tego gościa co robi reportaze z róznych miejsc? Jak sie go pytają po co nagrywa to mowi "bo lubię, chcę i mogę" xD Po co zmieniam? Bo im metoda style.backgroundColor="" nie zadziałała na jednym przycisku uruachamianym z eval(div.innerText) a eval(input.value) już tak. Więc zacząłem próbować testować jakieś inne rozwiązania, to jest jedno z nich. Jak się sprawdzi, będę miał narzędzie, jak nie poćwiczę programowanie. Tak się chyba bada naturę rzeczy. Ogólnie, to ma tworzyć w obiekcie wartość jego koloru i tła ,tak jak jest zapisana. Przy zmianie modyfikowana jest ta właściwosć. Nie słyszałeś o getNamedItem co do atrybutu? To jak sie do nich zabierasz? Sam wszystkie tworzysz? Ja to jest pierwsze co poznałem. Tu nie ma zadnej magii w tym kodzie, jedzie po wszystkich obiektach, jak widac. Jak chcesz to moge to wgrac na serwer i przetestujesz/jemy.

Masz tylko się nie chwal publicznie bo jeszcze nie gotowa, na razie niech to będzie nasz maly sekret.

http://infinityhost.ct8.pl/wbudowie2.html

Kliknij tam okienko "edycja" wpisz np. set_color(sTekst1,"green","white"); i czerwony przycisk.

Jak wpiszesz help(); to w okienku "Log" wyswietli Ci wszystkie tablice jakie są dostępne z obiektami, metodami i stringami.

0

Aleja po co Ci kod JS do zmiany kolorów?

Nie można by tego załatwić stylem inherit?

color: inherit;
background-color: inherit;

A jeśli nie, to inne podejście to byłyby zmienne CSS:

ul {
  --my-variable: black;
} 

ul li {
  color: var(--my-variable);
} 

Najlepiej jakbyś napisał co tak naprawdę potrzebujesz zrobić?

0

@Riddle: Od zawsze jedno - osiągnąć maksymalną wygodę. Bawienie się z

obiekt.style.backgroundColor = 'red';
obiekt.style.color = 'white';

kiedy to samo robi moje

set_color(obiekt,"red","white")

No jakby polowa znakow mniej.

Jak się bardzo dużo pisze to to może chyba być szybsze (i chyba skuteczniejsze bo operuje na atrybucie, czyli ma pierwszeństwo w ustawieniu stylu obiektu). Skuteczne, szybkie, efektywne. Tak z ciekawości wszystkie atrybuty można określać za pomocą stylów? A jak chce na przykład dodać do listy element i chcę żeby w tym czasie wszystkie zdarzenie byly nieaktywne we wszystkich pozostałych elementach, to da rade to stylami zrobić? Chodzi mi o taką rzecz jak mamy ustawienie globalne window.top.edytuje=1; i zdarzenie onClick="alert();"; i chcę to przyblokować w taki sposób onClick="if( window.top.edytuje==0){alert();};" to jak to tymi stylami osiągnąć?

Bo moja metoda po delikatnej modyfikacji nawet się nie zająknie i wykona zadanie.

0
johnny_Be_good napisał(a):

@Riddle: Od zawsze jedno - osiągnąć maksymalną wygodę. Bawienie się z ---- "obiekt.style.backgroundColor='red';obiekt.style.color='white';" --- kiedy to samo robi moje --- set_color(obiekt,"red","white") ;--- Jak się bardzo dużo pisze to to może chyba być szybsze (i chyba skuteczniejsze bo operuje na atrybucie, czyli ma pierwszeństwo w ustawieniu stylu obiektu). Skuteczne, szybkie, efektywne. Tak z ciekawości wszystkie atrybuty można określać za pomocą stylów? A jak chce na przykład dodać do listy element i chcę żeby w tym czasie wszystkie zdarzenie byly nieaktywne we wszystkich pozostałych elementach, to da rade to stylami zrobić? Chodzi mi o taką rzecz jak mamy ustawienie globalne window.top.edytuje=1; i zdarzenie onClick="alert();"; i chcę to przyblokować w taki sposób onClick="if( window.top.edytuje==0){alert();};" to jak to tymi stylami osiągnąć?

Bo moja metoda po delikatnej modyfikacji nawet się nie zająknie i wykona zadanie.

Próbujesz robić coś bardzo dziwnego albo coś bardzo na około.

johnny_Be_good napisał(a):

@Riddle: Od zawsze jedno - osiągnąć maksymalną wygodę. Bawienie się z

obiekt.style.backgroundColor = 'red';
obiekt.style.color = 'white';

kiedy to samo robi moje

set_color(obiekt,"red","white")

No jakby polowa znakow mniej.

No na pewno wyciągając taką funkcję set_color() nie zaoszczędzisz dużo czasu; prędzej stracisz na wymyślanie takich dziwnych systemów.

Mi to wygląda tak; że albo masz kod spaghetti i nie możesz nad nim zapanować; i wtedy powinieneś wystosować podejście funkcyjne i modularyzację, żeby nad tym jakoś zapanować (zamiast takich funkcji które kopiują kolory); albo masz dużo widoku który chcesz aktualizować; i teraz próbujesz napisać coś w stylu biblioteki do UI która by "sama" za Ciebie aktualizowała widok; i wtedy powinieneś skorzystać z jakiegoś React/Vue.

Poza tym, to że nie masz automatycznego formatowania też za dobrze nie świadczy. Ściągnij jakiś WebStorm albo VS Code chociaż.

0

Zobacz czy tak wygląda "nie możesz nad nim zapanować" http://infinityhost.ct8.pl/wbudowie2.html mam wszystkie obiekty w tablicy, mam wszystkie nazwy obiektów w tablicy, kazdy obiekt dostał workName - właściwość określającą jego nazwę a to początek.

0
johnny_Be_good napisał(a):

Zobacz czy tak wygląda "nie możesz nad nim zapanować" http://infinityhost.ct8.pl/wbudowie2.html mam wszystkie obiekty w tablicy, mam wszystkie nazwy obiektów w tablicy, kazdy obiekt dostał workName - właściwość określającą jego nazwę a to początek.

Okej, pytanko. Czy ten kod JS który widać jak się kliknie "Pokaż źródło" na tej stronie: http://infinityhost.ct8.pl/wbudowie2.html To Ty go napisałeś, czy jest wygenerowany z czegoś?

@johnny_Be_good: No to tak; ta aplikacja jest w tragicznym stanie i to z wielu powodów:

  • niesformatowany kod
  • js pomieszany z budowaniem domu i stylami
  • nie masz wydzielonej części z domeną, wszystko siedzi w DOM i stylach
  • nie masz żadnych funkcji; wszystko tutaj to jest proceduralne podejście gdzie każda funkcja nic nie zwraca tylko modyfikuje globalny stan
  • brak enkapsulacji

Moim zdaniem to co próbujesz napisać to jest właśnie "druga libka do UI". Najlepsza rada na teraz, to zacznij się uczyć React'a, bo to wygląda jakbyś właśnie potrzebował czegoś takiego.

0

To jest trzecia wersja tego co napisałem. Pierwsza jest "baza_studentów" na stronie, druga to "wbudowie" to co widzisz to jest trzecia wersja. Ogólnie to to ma być kod generowany przez C. Ale chwilowo się zająłem wyglądem. Tak jak pisałem, mam wszystkie obiekty w tablicy, mam wszystkie nazwy obiektów w tablicy, mam większość nazw funkcji w tablicy - to do tego żeby można było ustawiać do woli wszystko, jak mam w tablicach to to sam rozumiesz zrobienie opcji settings będzie trwało sekunde.

0
johnny_Be_good napisał(a):

To jest trzecia wersja tego co napisałem. Pierwsza jest "baza_studentów" na stronie, druga to "wbudowie" to co widzisz to jest trzecia wersja. Ogólnie to to ma być kod generowany przez C. Ale chwilowo się zająłem wyglądem. Tak jak pisałem, mam wszystkie obiekty w tablicy, mam wszystkie nazwy obiektów w tablicy, mam większość nazw funkcji w tablicy - to do tego żeby można było ustawiać do woli wszystko, jak mam w tablicach to to sam rozumiesz zrobienie opcji settings będzie trwało sekunde.

Tak czy tak, ten kod jest w tragicznym stanie.

Gdyby był poprawnie napisany, to również dałoby się dodać settingsów bardzo szybko.

0

No tak, użytkownika interesuje kod a nie możliwości jakie on udostępnia.
Nie ma żadnych funkcji?
A to -

function sInit(){sOutputLoad();
		sLogLoad();
		sUruchomLoad();
		sPomocLoad();
		sEdycjaLoad();
		sLogOnLoad();
		sLanguageLoad();
		sDiv1Load();sDiv2Load();
sDiv3Load();
sDiv4Load();
sViewDiv1Load();
sViewDiv2Load();
sViewDiv3Load();
sViewDiv4Load();
sEksportujLoad();
sUstawieniaLoad();
sUruchomDiv3Load();
sNaglowek1Load();
sNaglowek2Load();
sNaglowek3Load();
sNaglowek4Load();
sGrupyLoad();
sSortujLoad();
sTekst1Load();
sTekst2Load();
sTekst3Load();
sTekst4Load();
sPomocniczeLoad();
sPomocniczeHelpButtonLoad();

sPomocniczeSettingsButtonLoad();
sPomocniczeDefaultsButtonLoad();
sExeDivLoad();
load_settings();
set_colors();..
};

Jakbyś nie ogarniał, jestem w ciągu sekundy w stanie zresetować stan WSZYSTKIEGO.

Właśnie uruchamiając

"for(let i=0;i<MainObjectTable.length;i++){MainObjectTable[i].remove();}; sInit();"

2 linijki i zobacz jaki ogrom działań się wykonuje.

Absolutnie nie dotykając lokalnej bazy danych.

A to już jest majstersztyk

sPomocniczeSettingsButton.workName="sPomocniczeSettingsButton";
sPomocniczeSettingsButton.initName="sPomocniczeSettingsButtonLoad";
sPomocniczeSettingsButton.langPl="Ustawienia";
sPomocniczeSettingsButton.langEn="Settings";

sPomocniczeSettingsButton.pos=26;
MainItemTable.push(sPomocniczeSettingsButton);
MainItemNameTable.push("sPomocniczeSettingsButton");
MainFunctionTable.push("sPomocniczeSettingsButtonLoad");

Nie pomijając

sPomocniczeHelpButton.defaultStyle="color: white; background-color:RGB(0,0,62);width: 10%; height: 4%; left:25.3%; top: 10.5%; visibility:hidden; position: absolute; border: 1px solid white; font: italic bold 14px arial, serif; border-bottom-left-radius: 6px; border-top-left-radius: 6px; z-index: 9999;";
sPomocniczeHelpButton.defaultOnClick="sPomocnicze.innerHTML='';";

Rozumiesz?

Użytkownik może grzebać przy czym chce a potem odpalić funkcję obiektu "setDefaults()" i to mu zresetuje obiekt.

0
johnny_Be_good napisał(a):

No tak, użytkownika interesuje kod a nie możliwości jakie on udostępnia.
Nie ma żadnych funkcji?
A to -

Napisałem Ci, to jest proceduralne podejście gdzie funkcje nic nie zwracają tylko modyfikują stan.

Jakbyś nie ogarniał, jestem w ciągu sekundy w stanie zresetować stan WSZYSTKIEGO.
Właśnie uruchamiając

"for(let i=0;i<MainObjectTable.length;i++){MainObjectTable[i].remove();}; sInit();"

2 linijki i zobacz jaki ogrom działań się wykonuje.

Absolutnie nie dotykając lokalnej bazy danych.

To nie jest nic specjalnego, w dobrze napisanej aplikacji również masz taką możliwość bez wysiłku i tak samo szybko.


Dobrze, pozwól że skończę te wyzwiska i odpowiem:

  • Widać, że dużo czasu poświęciłeś na napisanie tej apki i dużo wysiłku, nikt tego nie kwestionuje
  • Widać, że interesujesz się i dbasz o to by móc wykonać kilka opcji na raz i żeby ograniczyć sobie pracę, z tym też nikt nie kwestionuje
  • Ale mechanizmy którego do tego zbudowałeś są bardzo wątpliwej jakości; i mimo że pozwalają Ci na razie zrobić to co chcesz, to są napisane bardzo słabo. Można je było napisać dużo lepiej, tak by nie straciły nic ze swojej funkcjonalności.
  • Dodatkowo, cała aplikacja jest wątpliwej jakości.

Więc, moja rada: Albo znajdź jakiegoś mentora który Ci doradzi jak możesz zrefaktorować tę aplikację; albo naucz się Reacta.

0

@Riddle:
" w dobrze napisanej aplikacji również masz taką możliwość bez wysiłku i tak samo szybko"

Raz piszesz , że kod jest w tragicznym stanie, za drugim że dobrze napisane aplikacje są tak samo szybkie i bezwysilkowe.

To działa ta moja stronka czy nie , skoro nie odbiega od takiej "dobrze napisanej aplikacji"?
xD

Jak React utworzy mi obiekt z takimi parametrami domyslnymi nie tworząc ich w obiekcie?

On to zrobi, ja to zrobie, co za różnica, jeśli on to zapisze gdzieś to lepiej chyba żebym ja to wiedział gdzie zapisuje.

Jak chcesz wykonać to co zrobiłem jeśli twierdzisz że w tym kodzie jest cokolwiek zbędnego?
Nie da się inaczej. Można tak jak piszesz na około, przez tego reacta, ale kod musi być GDZIEŚ.
Tutaj ja wiem gdzie jest i co robi.

"Dobrze, pozwól że skończę te wyzwiska"
W której liijce widzisz te wyzwiska?

1

Jest różnica pomiędzy tym czy aplikacja działa tak jak powinna (bo u Ciebie działa); a tym jakiej jakości piszesz kod i ile długu technologicznego zaciągnąłeś - i pod tym drugim względem u Ciebie jest tragicznie. Kod jest fatalnej jakości - owszem, działa, ale możliwość jego zmiany, edycji, aktualizacji jest bardzo niska i bardzo słaba.

Dlatego radzono Ci tutaj wcześniej React.

0

@Riddle: powiedz co mam zmienić za 5 minut będzie zmienione. W dużym stopniu taka funkcja jak set_color() dużo przyspiesza i uskutecznie wszystkie operacje. A będzie ich więcej.

"możliwość jego zmiany, edycji, aktualizacji jest bardzo niska i bardzo słaba"
Dla hakera(o ile oni istnieją) może i mała, bo nie lecę standardami, ale dla użytkownika i mnie chyba nieograniczona.
No i baza danych jest edytowalna, to czego tam nie można zmienić?

1
johnny_Be_good napisał(a):

@Riddle: powiedz co mam zmienić za 5 minut będzie zmienione. W dużym stopniu taka funkcja jak set_color() dużo przyspiesza i uskutecznie wszystkie operacje. A będzie ich więcej.

Ty myślisz o dodaniu funkcjonalności, i może nawet możesz je dodać szybko.

Ale ja mówię o rzeczach w kodzie - Jest masa rzeczy których nie dodasz, przez to jak słabej jakości jest ten kod, chociażby: dynamiczne importy, cachowanie, testy automatyczne, RTL, preprocesory CSS, zdarzenia. A to dlatego, że Twój kod jest napisany jak wielki zlepek linijek; a nie jak spójna całość.

Skup się uważnie to teraz Ci powiem bardzo ważną rzecz, która Ci umyka:

To co robi aplikacja to jedno

To jakiej jakości jest kod to drugie

Dla Ciebie to jest jedno i to samo, nie widzisz rozróżnienia między nimi.

johnny_Be_good napisał(a):

Dla hakera(o ile oni istnieją) może i mała, bo nie lecę standardami, ale dla użytkownika i mnie chyba nieograniczona.

No właśnie to Ci próbuje powiedzieć że nie.

Widzę że walczę z wiatrakami: mówię Ci, że masz kod słabej jakości i próbuje Ci wytłumaczyć, że wyszło by Ci dużo bardziej na dobre , gdybyś tylko był skłonny posłuchać, że dało się ten kod napisać inaczej i lepiej - ale Ty swoje. Jesteś niereformowalny.

0

Mój kod składa się z 3 czy 4 rzeczy

  1. Baza danych (generowana przez zewnętrzny program w C).
  2. Potem jest okolo 27 funkcji zakonczonych dodatkiem Load (który określa że jest to funkcja tworząca obiekt)
  3. Jest pare funkcji operujących na danych czyli takich jak load_data() ustaw_podswietlony() sprawdz_stan() sortuj() (one są niezbędne do operowania na bazie danych).

To jest ten "zlepek linijek" którego nie rozumiesz.
Na końcu funkcja sInit() ładująca to wszystko.

No bardziej czytelnego projektu nie da się chyba zrobić.
Ogarniasz mój sposób projektowania to możesz dowolnie zmieniać wszystko, dodawać wszystko (a jak trzymasz sie moich standardów to wszystko zagra idealnie)

"testy automatyczne"? Mam obiekty w tablicy to jedną pętlą mogę przetestować wszystko.
i funkcje mam w tablicy to mogę przejechać po ich kodach.
Co tam chcesz jeszcze testować?

1

No jakby polowa znakow mniej.

Wybacz, ale to jest argument totalnie z tyłka.
Kod nie ma być krótki, ale czytelny, do tego łatwy do modernizacji. Stosownie hacków, albo wspomniane wcześniej przez kogoś sklejanie stringów jest prowizorką. Oczywiście - to będzie działać, ale powodzenia za pół roku jak będziesz chciał coś zmienić. Albo jak ktoś inny zacznie w tym grzebać i straci pół dnia na rozgryzanie, jak to działa i czemu jest zrobione na około.

Tak - to Twój projekt i możesz robić jak tylko chcesz. Padło tutaj wiele odpowiedzi/porad od ludzi, którzy się na tym znają i sugerują, jak to można dobrze zrobić. A co Ty z tym zrobisz to już Twoja sprawa. Tylko serio - nie idź w kierunku mniejszej ilości znaków, bo potem dochodzi do czegoś w stylu słynnych jednolinijkowców @_13th_Dragon jak for(int ch;(ch=cin.get())!='\n';sum+=ch-'0') if(!isdigit(ch)) ch='0'; template<class T> ostream &Test<T>::prn(ostream &s) const { return s<<value<<endl; :D

0

@cerrato: "Wybacz, ale to jest argument totalnie z tyłka."

No tak ale jak mam pisać cały czas obiekt.style.backgroundColod="red"; a potem obiekt.style.color="white"; to set_color(obiekt,"red","white") no jest szybsze nie oszukujmy się. Cały czas klepie jakiś kod to u mnie zysk na czasie jest duży. Jak nie zacznę stosować tej metody i jej podobnych to mogę nie zdążyć napisać co chcę. A jeszcze została cała aplikacja i jej wygląd w C czy C++ do napisania. I w wersji konsolowej i okienkowej. A teraz jak widziałem te okienka linuxowe to też się zacząlem zastanawiać czy nie dodać.

A jeszcze strona jest do zrobienia ,(wersje językowe, kody fajnych funkcji jak ta set_colors()). :(

I znikąd pomocy same szyderstwa.

Zresztą poczekajmy do premiery tej mojej strony, aż będzie skończona.

btw. Jak mam używać reacta to go sobie napiszę.

1

@johnny_Be_good: Nie no, rozumiem wszystko co napisałes i Twój kod.

Jasno z niego wynika, że po pierwsze nie czytałeś nigdy "Clean code", a po drugie bardzo lubisz paradygmat proceduralny, cała aplikacja aż krzyczy "procedural!" "procedural!". Przyzwyczaiłeś się do takiego stylu i nie chcesz go zmieniać - rozumiem to. Bronisz go pisząc że można w nim zrobić wszystko czego potrzebujesz, i jeszcze Ci nie przeszkadza, to też rozumiem.

Jednakże, paradygmat proceduralny już dawno został wyparty przez obiektowy i funkcyjny, i nie specjalnie masz jakiekolwiek argumenty za tym żeby ich nie używać, niestety. Wszystkie rzeczy które wpisałeś "łatwość zmiany", opcje, robienie wszystkiego czego chcesz, kontrola nad kodem, włączanie i wyłączanie funkcji; wszystko to jest dostępne również w FP i OOP tak samo łatwo a może i nawet łatwiej.

Dodatkowo, myślę że powinieneś posłuchać @cerrato i nie kierować się ilością znaków, bo to prowadzi do absurdów, jak np to że masz bardzo wiele długich linijek w kodzie - myślę że może to wynikać z tego że nie używasz IDE (wnioskuję właśnie po długich linijkach i po braku formatowania).

Więc tak na prawdę cały ten wątek się sprowadza do pytania: Czy @johnny_Be_good jest w stanie odpuścić paradygmat proceduralny i przeczytać "Clean Code". Obawiam się że znam odpowiedź.

0

@Riddle: Nie odpowiadasz na moje pytania 1) gdzie widziałeś wyzwiska 2) Co tam chcesz testować (powiedz co to powiem jak to zrobic) 3) pisałeś ze tam ciezko cokolwiek zmienic, poprosilem o pytanie co zmienic, to to napisze w tej konsoli zmieniajac zawartość strony nie uploudujac nic 4) "to że masz bardzo wiele długich linijek w kodzie" - ogólnie to będzie generowane przez C więc to będzie jedna linijka. Albo kazdy znak w odzielnej linijce, ja o tym zadecyduje. Chwilowo chyba odziele funkcje do nowych linijek. Gdzie teraz widzisz te długie linijki? Tam długie jest tylko operowanie na bazie danych mam zmienic "tablica_pelna" na "tp" zeby było szybciej? Sorry can no do :(

Już zkubinski sam przyznał, że używanie klas zaciemnia obraz. U mnie wszystko widać jak na dłoni.

load_settings() jest długie ale się spieszyłem z modyfikacją wyglądu bo byla 2 w nocy i wczytałem wszystkie atrybuty do sDiv1 , z wstepem obiekt.setAttribute+wartośc z tablicy tam popoprawiałem wszystko hurtem i wygenerowaną linijkę wrzuciłem na szybko do strony w funkjcę, niedlugo to usunę i wrzucę to co tam jest tam gdzie ma być w obiekt.defaultStyle

2

Twój kod jest bardzo niskiej jakości.

Możesz albo to wyprzeć, i stwierdzić że na pewno napisałeś dobry kod, a forumowicze się mylą i się nie znają; albo możesz nam uwierzyć że ten kod nie jest tak dobry jak mógłby być; i zacząc go ulepszeć.

Twój wybór.

0

forumowicze nie odpowiadają na pytania - konstruktywny dialog jest niemozliwy. "Jest źle bo jest" - pójdę zmieniąć porządnie napisany kod bo dziecko się nudziło i grymasiło. No bądź człowieku poważny. Klienta kod raczej nie będzie obchodził.
Nie masz żadnych argumentów merytorycznych.
Caly czas powtarzasz "React" , "CleanCode" ale nie rozumiesz tych narzędzi, bo byś wymienił do czego są przydatne.

0
johnny_Be_good napisał(a):
  1. Baza danych (generowana przez zewnętrzny program w C).
  2. Potem jest okolo 27 funkcji zakonczonych dodatkiem Load (który określa że jest to funkcja tworząca obiekt)
  3. Jest pare funkcji operujących na danych czyli takich jak load_data() ustaw_podswietlony() sprawdz_stan() sortuj() (one są niezbędne do operowania na bazie danych).

Dzięki, że podałeś design, ponieważ trudno się go domyślić. Ale chciałbym zapytać o przyczynę akurat takiej konstrukcji.

  1. Statyczna baza danych. Jeśli z aplikacji będzie korzystać więcej niż jedna osoba albo dane będą zmieniane, albo danych będzie zbyt dużo, to wtedy nie zaktualizują się automatycznie. Dlatego może zaprogramować część bazodanową na ‘serwerze’. Na twoim hostingu jest taka możliwość. I w przeglądarce tylko pobierać wymagane dane. Rozdzieliłbym ten kod na dwie części: ‘serwerową’ i w przeglądarce www.
  2. Jeśli chodzi o nazewnictwo, to może użyć wymyślonego przeze mnie, a opisanego tutaj. Na początku może wydawać się trudne, ale pozwala użyć w stylu proceduralnym pojęć z dowolnego podejścia obiektowego.
  3. Te funkcje można by zrobić w części ‘serwerowej’.

Poza tym twój kod nie działa u mnie w przeglądarce. Jest błąd:

wbudowie2.html:819 Uncaught SyntaxError: Unexpected string

Tam jest:

wypisz_obiekty_do_ustawien=function(value,index){Tmp_String+="<br><b nr=""+index+"" onClick=''>"+value+"</b>";};

Prawdopodobnie błędnie użyłeś cudzysłowu podwójnego.

I nie przejmuj się tak krytyką. Ja miałem podobnie kilkanaście lat temu ;) . Najważniejsze jest odkryć, co naprawdę chcesz osiągnąć, a nie jak, a wtedy to, jak dotychczas coś robiłeś, zmienia się, ponieważ znajdujesz rozwiązanie.

I jeszcze polecę Ci taki edytor tekstu jak Geany. Podświetla składnię dość dobrze, a jest lekki. Jeśli programowałbyś na Linuksie, to polecałbym mój fork tego edytora, ale cóż…

0

@overcq: wpisz do konsoli
wypisz_obiekty_do_ustawien=function(){}; i sInit(); jak możesz.
" Rozdzieliłbym ten kod na dwie części: ‘serwerową’ i w przeglądarce www."
Ja malutki jestem, dopiero zaczynam.
Ogólnie chwilowo to chce dać okienko eksport zeby mozna bylo zmodyfikowana zawartosc skopiowac do schowka wkleic do notatnika w windows uruchomic program i miec nowa strona (amatorka, wiem, ale dopiero zaczynam z javascript)

Przyczyna konstrukcji?

Program tworzy baze danych bo zostałem poproszony o napisanie takiego kodziku ktory stworzy stronke(na razie to jest konsola - bo mial byc pod linuxem tez, ale będzie albo Midnight commander albo NortonCommander albo cos okienkowego - jeszcze nie wiem). No i napisałem, a potem zacząłem go rozwijać.

Zalety.
Mam funkcję tworząca obiekt z domyslnymi parametrami, mogę go usuwac, resetować, bez wplywu na bazę danych, staram się sobie pozostawiać maksymalne pole manewru.
Tutaj chyba nie trzeba nic tlumaczyc.
A funkcje do operowania na bazie danych?
No moglem dać te Pola sTekst1..4 dac do jednego Diva większego i tam dodac te funkcje. Racja. Może wersja 4 ta taka będzie.
I w sumie mogłem dać load data jako funkcję grupy sGrupy (pole select).

1
johnny_Be_good napisał(a):

Już zkubinski sam przyznał, że używanie klas zaciemnia obraz. U mnie wszystko widać jak na dłoni.

Skoro C++ guru tak powiedział to na pewno tak jest.

johnny_Be_good napisał(a):

Klienta kod raczej nie będzie obchodził.

Jak klient zleci nowej firmie upgrade istniejącej aplikacji, a firma po sprawdzeniu source code'u załamie się i wystawi fakturę na horrendalnie wysoką kwotę, to wtedy kod go zacznie obchodzić. :)

1
johnny_Be_good napisał(a):

Bawienie się z

obiekt.style.backgroundColor = 'red';
obiekt.style.color = 'white';

kiedy to samo robi moje

set_color(obiekt,"red","white")

No jakby polowa znakow mniej.

No dobra, ale nawet mając ten cel można go osiągnąć po prostu tak:

function set_color(obiekt, backgroundColor, color) {
   obiekt.style.backgroundColor = backgroundColor;
   obiekt.style.color = color;
}

image

0

@LukeJL: Bez powodu to robię tak ?

function set_color(obiekt,bgcolor,color){new_xbgcolor="background-color:"+bgcolor+";";new_xcolor="color:"+color+";";tmp=obiekt.attributes.getNamedItem("style").value.replace(obiekt.xbgcolor,"background-color:"+bgcolor+";");tmp2=tmp.replace(obiekt.xcolor,"color:"+color+";");obiekt.attributes.getNamedItem("style").value=tmp2;obiekt.xbgcolor=new_xbgcolor;obiekt.xcolor=new_xcolor;};

Tu nie chodzi o sam kolor poza tym a dostęp i uaktualnianie atrybutów w masowej skali.
I dodawanie i usuanie funkcjonalnosci, a dokladnie operowanie na częsciach atrybutów.

1 użytkowników online, w tym zalogowanych: 0, gości: 1