Care e diferenta dintre metoda cross-browser si adaugarea evenimentelor prin adaugarea in eticheta html dupa metoda veche, e vreuna din ele mai eficienta decat cealalta?
Daca da, in ce situatii?
Diferente metode adaugare evenimente
-
- Mesaje:82
Diferente metode adaugare evenimente
MarPlo
Mesaje:4343
Salut
Exista mai multe metode de inregistrare evenimente in JavaScript, cunosc 3.
1. Cea mai putin folosita este aceasta:
Exemplu:
- Dezavantaj, aceasta metoda nu e recunoscuta in Internet Explorer (cel putin in versiuni 8 si mai vechi).
2. Metoda cea mai indicata este aceasta (e recunoscuta in toate navigatoarele web):
- Dezavantaj, cand sunt sterse sau adaugate dinamic (cu JS) elemente in pagina, inregistrarea eveniment-ului la obiectul respectiv se pierde deoarece ierarhia DOM din pagina a fost modificata.
Exemplu:
- O solutie ca evenimentul sa functioneze si dupa stergere /adaugare dinamic elemente in pagina esta ca inregistrarea evenimentelor sa fie adaugate intr-o functie care sa fie apelata si dupa ce au fost sterse /adaugate dinamic elemente in pagina, astfel evenimentele sunt inregistrate din nou.
Erxemplu:
3. Metoda veche este adaugarea evenimentului in tag-ul HTML. Aceasta nu e afectata de adaugare /stergere dinamic elemente in pagina.
Exemplu:
- Dezavantaj, amestecarea codului HTML si JavaScript imprastiat in pagina.
Daca de exemplu se doreste inregistrarea eveniment-ului "onclick" la 5 elemente cu aceeasi "class", trebuie adaugat in fiecare tag, in plus, in cazul cand se doreste efectuarea anumitor modificari, sau schimbari de template, e mai mult de munca, deoarece trebuie facute la fiecare tag.
Tendinta e de a separa cat mai mult codurile HTML, CSS si JavaScript unele de altele. Dar normal, acolo unde e necesar se foloseste si adaugarea evenimentului in tag.
Exista mai multe metode de inregistrare evenimente in JavaScript, cunosc 3.
1. Cea mai putin folosita este aceasta:
Cod: Selectaţi tot
element.addEventListener('eveniment', nume_functie_apelata, true);
Cod: Selectaţi tot
<div id="thediv">Clic</div>
<script type="text/javascript"><!--
function test(){
alert(this.id);
}
var oDiv = document.getElementById('thediv');
oDiv.addEventListener('click', test, true);
//-->
</script>
2. Metoda cea mai indicata este aceasta (e recunoscuta in toate navigatoarele web):
Cod: Selectaţi tot
obiect.eveniment = nume_functie_apelata;
Exemplu:
Cod: Selectaţi tot
<body>
<div id="thediv">Clic</div>
<script type="text/javascript"><!--
function test(){
document.body.innerHTML = document.body.innerHTML+ '<p>Element nou</p>';
alert('Clic iar');
}
document.getElementById('thediv').onclick = test;
//-->
</script>
</body>
Erxemplu:
Cod: Selectaţi tot
<body>
<div id="thediv">Clic</div>
<script type="text/javascript"><!--
function test(){
document.body.innerHTML = document.body.innerHTML+ '<p>Element nou</p>';
alert('Clic iar');
regEvents(); // inregistreaza iar evenimentul
}
function regEvents() {
document.getElementById('thediv').onclick = test;
}
regEvents(); // inregistreaza evenimentul
//-->
</script>
</body>
Exemplu:
Cod: Selectaţi tot
<div onclick="functie_apelata();">Clic</div>
Daca de exemplu se doreste inregistrarea eveniment-ului "onclick" la 5 elemente cu aceeasi "class", trebuie adaugat in fiecare tag, in plus, in cazul cand se doreste efectuarea anumitor modificari, sau schimbari de template, e mai mult de munca, deoarece trebuie facute la fiecare tag.
Tendinta e de a separa cat mai mult codurile HTML, CSS si JavaScript unele de altele. Dar normal, acolo unde e necesar se foloseste si adaugarea evenimentului in tag.
Subiecte similare
- Adaugare orar zilele saptamanii in baza de date
PHP - MySQL - XML Primul mesaj
SalutUltimul mesaj
Am o baza de date cu toate locatiile
location_id | name |address |telephone | open
Si un formular prin care incarc datele in bd....
Treaba cu adaugare json in mysql e simpla, se rezuma la adaugarea unui sir care contine ghilimele duble.
Problema la tine e ca acele ghilimele sunt...