[JavaScript] Naam bij object (this)

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • Josvds
  • Registratie: November 2004
  • Laatst online: 26-08 20:42
Is het mogelijk bij this functie de naam van de variable terug te krijgen..
Zie onderstaande voorbeeld, zodat ik binnen Functie kan uitlezen wat de naam van de functie is.
In dit geval func.

function Functie()
{
}

var func = new Functie();

Bedankt

Acties:
  • 0 Henk 'm!

  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

Wil je de naam van de variabele terugkrijgen of de naam van de functie :? ;)

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 22-09 16:31

Bosmonster

*zucht*

Nee, waarom zou je dat uberhaupt nodig hebben? Namen zijn slechts labels voor je code, intern werk je met references.

Acties:
  • 0 Henk 'm!

  • jbdeiman
  • Registratie: September 2008
  • Laatst online: 19:49
Als je een bepaalde waarde wilt gebruiken binnen je functie geeft je dat mee tussen ( en )
code:
1
2
3
4
5
function functie(variabelenaam){
   alert(variabelenaam);
   }

var func = functie('func');

Acties:
  • 0 Henk 'm!

  • Josvds
  • Registratie: November 2004
  • Laatst online: 26-08 20:42
Het probleem dat k het is hieronder simpel weergegeven.
Hoe krijg ik het voor elkaar dat hij van this de functie klik aanroept?
Zonder dat ik de naam van de variable mee moet geven.

Pagina A
<div id='veldA'></div>
<script language='javascript'>
var invullen = new InvulZoek();
invullen.instellen('veldA');
</script>

Functie
function InvoerZoek()
{
this.instellen = function(veld)
{
document.getElementById(veld).innerHTML = "<a onclick='?????'>Zoeken</a>";
}
this.klik = function()
{
alert('test');
}
}

[ Voor 5% gewijzigd door Josvds op 16-04-2009 17:28 ]


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 22-09 16:37

.oisyn

Moderator Devschuur®

Demotivational Speaker

Door niet innerHTML te gebruiken maar gewoon via de DOM te manipuleren, want dan kun je gewoon een reference naar een functie meegeven.

JavaScript:
1
2
var thisObject = this;
document.getElementById(veld).onclick = function() { thisObject.klik(); };

[ Voor 30% gewijzigd door .oisyn op 16-04-2009 17:30 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

  • Josvds
  • Registratie: November 2004
  • Laatst online: 26-08 20:42
Dit is nu mijn onderstaande code, DOM werkt inderdaad best handig, alleen nu zit ik met het probleem dat ik een onclick toe voeg in de lus maar hij in de function altijd i als het eind cijfer van de lijst.length pakt. Dus al was de eerste 1 dan wordt hij gewijzigd in 10.

//--> Tabel aanmaken
var table = document.createElement("table");
var tbody = document.createElement("tbody");

//--> Woonplaatsen toevoegen
for(var i = 0; i < lijst.length; i++)
{
//--> TR, TD en DATA aanmaken
var tr = document.createElement("tr");
var td = document.createElement("td");
var data = document.createTextNode(lijst[i][1] + " [" + lijst[i][2] + "]");

//--> Samenstellen
td.appendChild(data);
tr.appendChild(td);
tbody.appendChild(tr);

//--> Cel instellingen
td.setAttribute('id', 'html_pid_tcel_livezoek_result_#' + lijst[i][0]);
td.className = "zoekVeldCelNonActief";
td.onclick = function(){ alert(i); }
}

//--> Tabel vullen en instellen
table.appendChild(tbody);
table.setAttribute('border', '0');
table.setAttribute('cellspacing', '0');
table.setAttribute('cellpading', '0');
table.className = "zoekVeldAchtergrond";";

Acties:
  • 0 Henk 'm!

Verwijderd

Josvds schreef op vrijdag 17 april 2009 @ 09:43:
Dit is nu mijn onderstaande code, DOM werkt inderdaad best handig, alleen nu zit ik met het probleem dat ik een onclick toe voeg in de lus maar hij in de function altijd i als het eind cijfer van de lijst.length pakt. Dus al was de eerste 1 dan wordt hij gewijzigd in 10.
Dit is een heel veel voorkomend en lastig scoping probleem met closures. Dit is de oplossing die ik meestal gebruik:
JavaScript:
1
2
3
4
5
6
7
// Deze buitenste functie is nodig om een nieuwe scope te creeeren:
td.onclick = function(i) {
    // De binnenste functie komt uiteindelijk aan de TD te hangen
    return function() {
        alert(i);
    }
}(i);

Hier heb ik ooit een uitgebreidere uitleg geschreven: http://www.mennovanslooten.nl/blog/post/62

Acties:
  • 0 Henk 'm!

  • Josvds
  • Registratie: November 2004
  • Laatst online: 26-08 20:42
Verwijderd schreef op vrijdag 17 april 2009 @ 09:54:
[...]

Dit is een heel veel voorkomend en lastig scoping probleem met closures. Dit is de oplossing die ik meestal gebruik:
JavaScript:
1
2
3
4
5
6
7
// Deze buitenste functie is nodig om een nieuwe scope te creeeren:
td.onclick = function(i) {
    // De binnenste functie komt uiteindelijk aan de TD te hangen
    return function() {
        alert(i);
    }
}(i);

Hier heb ik ooit een uitgebreidere uitleg geschreven: http://www.mennovanslooten.nl/blog/post/62
Echt bedankt... Had het inmiddels ook inderdaad ergens op die methode gevonden.
Nu werkt het bedankt!

Acties:
  • 0 Henk 'm!

  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

Verwijderd schreef op vrijdag 17 april 2009 @ 09:54:
[...]

Hier heb ik ooit een uitgebreidere uitleg geschreven: http://www.mennovanslooten.nl/blog/post/62
offtopic:
Krijg een 404 terug

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.

Pagina: 1