Методе – функције у објектима¶
У претходним лекцијама смо се упознали са објектима који представљају групе повезаних података. Објекти поред података могу да садрже и локалне функције, које се називају методе. Методе су веома сличне обичним функцијама: свака има своје име, могу да добијају параметре и враћају резултат. Разлика је у томе што су методе тесно везане за објекат и служе да приликом позива промене објекат коме припадају или да израчунају неке вредности на основу поља објекта.
Ако објекат има методе, оне се користе слично пољима објеката. Као што се неком пољу приступа тако што се иза имена објекта стави тачка, а онда име поља, тако се и функције објекта (методе) позивају тако што се иза имена објекта коме припадају стави тачка и име функције са заградама, између којих се могу навести параметри:
imeObjekta.imeMetode(<parametri>)
Употребу једне методе смо већ видели у примеру функције prikaziTacnoVreme
. Објекти који садрже неки временски тренутак имају (поред осталих) методу toLocaleTimeString()
, која враћа стринг са временом тог тренутка, без датума.
function prikaziTacnoVreme() {
const sada = new Date();
alert(`Страница је отворена у ${sada.toLocaleTimeString()} сати.`);
}
У језику JavaScript постоји велики број оваквих уграђених објеката, који имају разне готове методе које можемо да користимо.
Методе низова¶
Низови у језику JavaScript су флексибилне структуре, у које лако можемо да додајемо нове елементе или да из њих избацујемо неке елементе. Ако променљива ocene
садржи низ неких вредности, можемо да користимо следеће функције:
toString()
ова метода ће вратити стринг који садржи све елементе низа са запетама (зарезима) између елемената.push(vrednost)
када се ова метода примени над низом, она ће додатиvrednost
на крај низа као нови последњи елемент.pop()
када се ова метода примени над низом, она ће уклонити последњи елемент из низа.join(separator)
метода веома слична методиtoString()
, враћа стринг који представља садржај низа. Једина разлика је то што ће уместо запете користити вредност параметраseparator
, која је прослеђена као параметар.slice(pocetak, kraj)
ова метода враћа нови низ, који представља део низа над којим је примењена. Нови низ ће садржати све елементе почевши од елемента на позицијиpocetak
до елемента испред позицијеkraj
.
У следећем примеру можете видети како се користе ове методе над објектом који представља низ оцена:
Методе документа стране¶
Већ смо се упознали са објектом document
, преко којег можемо да приступимо HTML елементима у страни помоћу неких поља тог објекта. Поред поља са вредностима, овај објекат има и разне методе. Једна од његових метода је и document.write
, која може да послужи за додавање садржаја веб-страни. У следећем примеру употребљена је ова метода да дода један параграф:
На овај начин можемо да додајемо и сложеније структуре веб-страни:
Методе документа стране – селектовање елемената¶
Објекат document
има и неколико метода које нам омогућавају да пронађемо елементе на страни по идентификатору (атрибуту id
), типу елемента, или некој од класа. Најбитније методе објекта document
за приступање HTML елементима су:
document.querySelector(cssSelektor)
проналази први HTML елемент у документу који одговара задатом CSS селектору.document.querySelectorAll(cssSelektor)
проналази све HTML елементе у документу који одговарају задатом CSS селектору.
Помоћу ових метода проналажење елемената је једноставније од начина које смо до сада користили. Било који елемент који се може описати (и стилизовати) неким CSS селектором, може се и пронаћи помоћу ових метода тако што се тај исти селектор проследи као параметар.
Поред ових метода можемо користити још три методе за проналажење објеката по идентификатору, имену елемента, или класи:
document.getElementById(id)
проналази један HTML елемент у документу који има вредност идентификатора, која је прослеђена методи као параметар. ПозивgetElementById('naslov')
је еквивалентан позиву методеquerySelector('#naslov')
.document.getElementsByTagName(name)
проналази низ HTML елемента задатог типа у документу. ПозивgetElementsByTagName('div')
је еквивалентан позиву методеquerySelectorАll('div')
.document.getElementsByClassName(name)
проналази низ HTML елемента у документу, који имају задату класу. ПозивgetElementsByClassName('levo')
је еквивалентан позиву методеquerySelectorAll('.levo')
.
Ове методе објекта document
нам омогућавају да претражимо HTML документ по различитим критеријумима, нађемо елементе који одговарају неком критеријуму и променимо им нека својства, изглед или чак и садржај. У следећем примеру ћемо JavaScript програмом лоцирати одељак вести помоћу методе getElementById
, а затим ћемо том одељку променити боју позадине:
Вежба 1
Замените у претходном кôду наредбе:
const odeljakVesti = document.getElementById("vesti");
odeljakVesti.style.backgroundColor = '#C0FFFF';
…наредбама…
const pojedinacneVesti = document.querySelectorAll('#vesti p');
pojedinacneVesti[0].style.color = 'red';
…и покушајте да објасните, пре покретања примера, шта ће бити ефекат ових наредби. Покрените пример и проверите своју претпоставку.
Вежба 2
У претходном примеру додајте следећи кôд:
const naslovi = document.querySelectorAll('#aktivnosti, #vesti');
for (let i = 0; i < naslovi.length; i++) {
const naslov = naslovi[i];
naslov.style.color = 'green';
}
Који је очекиван резултат? Покрените пример и проверите своју претпоставку.
Вежба 3
Користећи querySelectorAll
пронађите све наслове („Убацивање текста“, „Наше активности“ и „Вести“) и обојите им позадину у плаво, без додавања класе или идентификатора наслову „Убацивање текста“.
Уместо постављања боје, могли смо, на пример, да убацимо параграф Најновија вест у одељак са вестима. Ради тога смо употребили и методе document.createElement()
, document.createTextNode()
, element.appendChild(cvor_dete)
и element_roditelj.insertBefore(novi_element, element_dete)
, за које се не очекује да их у оквиру овог курса запамтите и детаљно познајете. У овом примеру, поменуте методе су употребљене само као илустрација и наговештај могућности употребе JavaScript програма у HTML странама. По потреби се увек можете вратити на овај пример, или сами пронаћи на интернету сличан пример и детаљнија објашњења.
Вежба – нов одељак
У претходном примеру користећи document.createElement
i document.createTextNode
додајте нов одељак „Чланови“ са листом неколико имена.