• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Używanie zmiennych js w atrybutach HTML

Object Storage Arubacloud
0 głosów
453 wizyt
pytanie zadane 12 września 2018 w JavaScript przez BetBet Użytkownik (550 p.)
zmienione kategorie 12 września 2018 przez criss

Witam,
Zastanawiam się czy można używać zmiennych JS w atrybutach HTML.
Powiedzmy mam taką funkcję którą będę renderował HTML i chcę dopisać w html ID podane w funkcji

Coś takiego:

function dodajHTML(element, ID)
{
    $('element')append('<div id="divNr"+ID>');
}

Oczywiście to wyżej nie działa ale wyjaśnia o co mi chodzi.
Wiem, że mogę sobie to ustawić metodą .attr() ale chyba musiał bym to zrobić po wyrenderowaniu szablonu, a to rozwiązanie troszkę słabo mi się widzi.

1
komentarz 12 września 2018 przez pablop76 VIP (123,180 p.)
Wyjmij ID ze stringa i zamknij diva.

3 odpowiedzi

+2 głosów
odpowiedź 12 września 2018 przez thryndl Nałogowiec (30,470 p.)

Musisz użyć do tego konkatenacji, a nie przekazywać zmienna w stringu.

Druga opcja to Template literals, które przyszły wraz z ES6

+1 głos
odpowiedź 12 września 2018 przez k.wichura Pasjonat (19,870 p.)
<div>cos</div>
const element = document.querySelector('div');
function dodajHTML(element, ID) {
const newElement = document.createElement("div");
newElement.setAttribute("id", `divNr${ID}`);
element.appendChild(newElement);
}

dodajHTML(element, 'superID')

po co używac do tego jquery?

komentarz 12 września 2018 przez BetBet Użytkownik (550 p.)

tak wiem, znam Twojego artka o angularze

Mogę prosić o linka, chętnie bym poczytał :)

komentarz 12 września 2018 przez Comandeer Guru (601,110 p.)
@BetBet, proszę: https://www.webkrytyk.pl/2014/12/12/moja-prawda-o-angular-js/

Niemniej traktuj to jako ciekawostkę, bo minęło już mnóstwo czasu i nowy Angular to zupełnie inna bestia (ale wciąż przekombinowana :P).
komentarz 19 września 2018 przez BetBet Użytkownik (550 p.)
Wykorzystując jeszcze troszkę ten wątek, zastanawiam się co wybrać przy kolejnym projekcie kiedy skończę bieżący. W jquery juz się czuję swobodnie, z opisów jakie napotkałem jedni mówią że vue ma beznadziejną dokumentację i część dalej jest po Chińsku drudzy, z kolei że najprzyjemniejszą, react korzysta z tego dziwnego JSX a angular używa typescript
Z tych wad najbardziej odstrasza chyba mnie react a typescript to nawet nwm czy się bać.

Tak więc albo w kolejnym projekcie będę używał czystego js albo któregoś z nich, co byście wybrali na moim miejscu?
1
komentarz 19 września 2018 przez Tomek Sochacki Ekspert (227,510 p.)
TypeScript to nic wielkiego, do opanowania w jeden dzień, zresztą dokumentacja jest dość dobra. JSX to po prostu pewien rodzaj składni.

Generalnie jako programista wciąż uczysz się czegoś nowego więc od tego nie uciekniesz.

Ja pracowałem trochę z React/redux ale przyznam szczerze, że przyjemniej pracuje mi się obecnie w Angular przy dość dużej apce i pod bardzo dużym obciążeniem ruchem sprawdza się całkiem nieźle. Próg wejścia w Angular moim zdaniem jest bardzo niski, wystarczy w miarę dobra wiedza z JS i rozumienie asynchroniczności ale to akurat dzisiaj już podstawa nawet na juniora.

Angular wykorzystuje też rxjs co mi się bardzo podoba ale oczywiście nie jest to przymus, można spokojnie pozapinać sobie obsługę API na pomisach, co kto woli.

Co do VUE to się nie wypowiem bo nie znam tego frameworka.
1
komentarz 19 września 2018 przez Comandeer Guru (601,110 p.)

TypeScript to nic wielkiego, do opanowania w jeden dzień

Może na poziomie składni – i to pod warunkiem, że dobrze znamy ES6+ i kiedyś przynajmniej widzieliśmy Javę z daleka. Na poziomie konwencji – tu już jest IMO trudniej, bo to właśnie obiektówka w stylu Javy, totalnie inna niż ta JS-owa.

Ja za to podrzucę jeszcze dwie, moim zdaniem, ciekawe ścieżki:

0 głosów
odpowiedź 12 września 2018 przez BetBet Użytkownik (550 p.)

Dobra, poradziłem sobie tak:
Ten sposób nie działał. 

function dodajHTML(element, ID){
    $(element).append('<div id=divNr${ID}></div>');
}

w powyższym przypadku id="divNr${ID}" - czyli nie używało zmiennej ID tylko to wszystko traktowało jako wartość atrybutu ID.
A działający sposób to:
 

function dodajHTML(element, ID){
    $(element).append('<div id=divNr' + ID + '></div>');
}

Praktycznie tak samo próbowałem na początku ale robiłem to tak:
 

function dodajHTML(element, ID){
    $(element).append('<div id="divNr" ' + ID + '></div>');
}

ale powyższy przykład zwracał tylko divNr i ID traktował jako deklarację atrybutu HTML, jeśli można tak to nazwać.

komentarz 12 września 2018 przez BetBet Użytkownik (550 p.)
edycja 12 września 2018 przez BetBet
Teraz zerknąłem, że pierwszy przykład powinien być zamknięty w ` ` a nie w ' ' lub " " wiec też działa i jest o wiele lepszym zastosowaniem niż użycie ' '

Podobne pytania

+1 głos
1 odpowiedź 146 wizyt
pytanie zadane 1 września 2022 w JavaScript przez castor_fiber Użytkownik (800 p.)
0 głosów
2 odpowiedzi 236 wizyt
+1 głos
1 odpowiedź 285 wizyt

92,570 zapytań

141,422 odpowiedzi

319,643 komentarzy

61,958 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...