Middle
Kuo skiriasi atributai nuo savybių HTML žymėse?
sobes.tech AI
Atsakymas iš AI
Ypatybės – tai poros vardas-reikšmė, kurios rašomos tiesiogiai atviroje HTML žymoje. Jos apibrėžia pradinius arba dabartinius elemento parametrus, tačiau ne visada tiesiogiai atspindi jo dabartinę būseną DOM.
Savybės – tai reikšmės, susijusios su JavaScript objektais, kurie reprezentuoja DOM elementus. Jos yra dinamiškos ir atspindi dabartinę elemento būseną.
Štai pagrindiniai skirtumai:
- Vieta: Ypatybės yra HTML, savybės – DOM objektuose.
- Duomenų tipai: Ypatybės visada yra eilutės. Savybės gali turėti įvairius duomenų tipus (eilutes, skaičius, loginės reikšmės, objektus).
- Dinamiškumas: Ypatybės yra statinės po puslapio įkėlimo (nors jas galima keisti per JavaScript). Savybės gali būti dinamiškai keičiamos vartotojo sąveikos ar skriptų logikos dėka.
- Ryšys: Daugelis ypatybių turi tiesioginius atitikmenis savybėms (pavyzdžiui,
idatributas iridsavybė). Tačiau yra atributų be tiesioginių savybių (data-*) ir savybių be tiesioginių atributų (textContent,className).
Pavyzdys:
<input type="text" value="Pradinis reikšmė" readonly>
Čia:
type="text",value="Pradinis reikšmė"irreadonly– tai atributai.
Po puslapio įkėlimo, atitinkamos savybės JavaScript'e:
// Gauname input elementą
const inputElement = document.querySelector('input');
// Elemento savybės
console.log(inputElement.type); // Parodys: "text" (savybė atitinka atributą)
console.log(inputElement.value); // Parodys: "Pradinis reikšmė" (pradinė savybė)
console.log(inputElement.readOnly); // Parodys: true (savybė atitinka atributą, bet camelCase)
Jei vartotojas pakeis teksto įvedimo laukelio tekstą, savybė value bus atnaujinta, tačiau HTML value atributas liks tas pats, atspindėdamas tik pradinę reikšmę:
// Vartotojas įvedė "Nauja reikšmė"
// inputElement.value dabar bus "Nauja reikšmė",
// tačiau inputElement.getAttribute('value') vis dar grąžins "Pradinis reikšmė".