Javascript Object

Status
Niet open voor verdere reacties.

RonaldGJ

Gebruiker
Lid geworden
28 apr 2007
Berichten
419
Beste mensen,

Ik ben bezig met het maken van een jQuery plugin. Ik gebruik hier settings voor en extend die door middel van de extend-functie.
Nu is het zo, dat ik een aantal standaard functies heb, die ik in een 'settings' variabele heb staan. Ik heb in de settings een key die 'width' heet en een key die 'elementClassName' heet.

Mijn vraag:
Is het mogelijk binnen een object een bovenstaande waarde van een key uit te lezen?

Voorbeeldje!

var settings = {
elementClassName: 'element',
width: settings.elementClassName ? document.getElementsByClassName(settings.elementClassName).clientWidth : 500
}

Vast bedankt!

Gr. Ronald! :)
 
Nee, volgens mij niet. Wat je wel kan doen is valsspelen, en gewoon een constructor gebruiken:

[js]var maak_settings = function(elem)
{
this.elementClassName = elem;

this.width = elem ? document.getElementsByClassName(elem).clientWidth : 500;
};

// en dan aanroepen:"

var x = new maak_settings('test'); // elem is 'test', dus this.width is de breedte van het .test element.
var y = new maak_settings(); // elem is leeg, dus this.elementClassName is ook undefined, en this.width = 500.

// en dan gewoon net zoals een normaal object aanroepen:

x.width; // breedte van .test :)[/js]

trouwens, volgens mij werkt je .width niet. ElementSByClassName returnt meerdere elementen (array). Dus, misschien moet je er dit van maken:
[js]document.getElementsByClassName(elem)[0].clientWidth // 1e element dat gevonden wordt[/js]


:thumb:
 
Laatst bewerkt:
Obstakel?
  • Volgens de compatibilty-table van Quirksmode werkt document.getElementsByClassName('...')niet in IE8, toch nog 30% van alle IE-surfers in Nederland.
  • Of heeft jQuery een kunstje aan boord om het in IE8 wel te laten werken?
Als workaround gebruik ik iets als:
[JS]var allDiv=document.getElementsByTagName('div');
for (var i=0; i<allDiv.length; i++){
if (allDiv.className=="pietje"){
// vertellen wat met die div met class="pietje" moet gebeuren
}
}[/JS]
Daar is geen jQuery voor nodig. :)

Met vriendelijke groet,
CSShunter
 
Laatst bewerkt:
Bedankt voor de tips. Ik ben ondertussen verder gegaan op een andere manier. Toch bedankt voor de antwoorden!

Gr. Ronald! :)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan