Skip to content

Mihai Baboi

Vorbim despre mașini, tehnologie și nu numai

Menu
  • Home
  • Despre mine
  • Despre blog
  • Contact
  • Privacy Policy
Menu

Trimiterea de parametri in JavaScript

Posted on January 13, 2011

Acest articol este adresat celor care inca mai folosesc cod JavaScript simplu (fara jQuery, Prototype, etc.). Am lucrat la un moment dat la un proiect, unde aveam nevoie sa folosesc o functie JavaScript care nu justifica includerea a 26k de jQuery.

Sunt de parere ca nu trebuie sa folosesc solutii mai complexe decat e cazul (mai ales daca asta inseamna sa adaug librarii suplimentare). Prin urmare m-am apucat batraneste de JavaScript. Functia urma sa fie chemata prin intermediul unui link si arata ceva de genul asta:

<script type="text/javascript">

function doSomething(obj)
{
	var href = obj.getAttribute('href');
	var title = obj.getAttribute('title');

	// do somethig with these...
}

</script>

Iar apelul era de genul asta:

<a href='javascript:doSomething(this)'>Click me!</a>

Scopul era ca atunci cand apelez functia doSomething(), sa trimit elementul <a> ca parametru. Problema era ca de fiecare data cand inceram sa apelez getAttribute() pe parametrul obj, primeam o erorare care imi spunea atributul pe care-l caut nu exista.

Am folosit console.log() pentru a inspecta elementul care ajungea in functia mea si am facut o constatare surprinzatoare: Prin this, browser-ul intelegea sa trimita obiectul window ca parametru la functia mea.

Cum am rezolvat problema? Am schimbat apelul functiei. Se pare ca daca folosesc atributul onclick pentru a apela functia, browser-ul intelege ca this este elementul curent. Asa ca am modificat apelul sa arate astfel:

<a href='#' onclick='doSomething(this)'>Click me!</a>

Din acel moment totul a mers de minune. Nu stiu sa explic exact de ce apare acest comportament, dar m-am gandit sa-l mentionez aici pentru cei care se lovesc, poate, de aceeasi problema.

Share this:

  • Click to share on Facebook (Opens in new window) Facebook
  • Click to share on X (Opens in new window) X

Related

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

  • Analiză Tehnică
  • Auto
  • Comunicate
  • Concurs
  • Diverse
  • Evenimente
  • Foto
  • Hardware
  • Întreabă-mă
  • Lansări
  • Mașini
  • Noutăți auto
  • Opinie
  • Programare
  • Review
  • Scurte
  • Șed și Cuget
  • Zvonuri

allview Android aspect autonomie browser bune practici camera CodeIgniter Code Igniter Cold Fusion concluzii concurs css3 display div dual core Evolio evoMAG evoMAG.ro hardware HTC html html5 instalare lansare laptop Library libris.ro marketonline Nikon nokia performanta pret programare review samsung Samsung Galaxy S II smartphone specificatii standarde Symbian tableta teste upgrade user experience

©2025 Mihai Baboi | Design: Newspaperly WordPress Theme