Closures problem med refference argument, istedet for copy.
HejsaJeg har et problem, med at når jeg angiver en onclick function via. closures, så bruger javascript en refference, og ikke værdien af det argument jeg sender som parameter.
Koden er som følger
var buttons = [['bold','bold-button','Bold']
,['italic','italic-button','Italic']
,['underline','underline-button','Underline']
,['strikethrough','strike-button','Strikethrough']
,['superscript','super-button','Superscript']
,['subscript','sub-button','Subscript']
,['justifyleft','justify-left-button','Justify left']
,['justifycenter','justify-center-button','Justify center']
,['justifyright','justify-right-button','Justify right']
,['justifyfull','justify-full-button','Justify full']
,['inserthorizontalrule','hr-button','Horisontal ruler']
,['insertorderedlist','ordered-list-button','Ordered list']
,['insertunorderedlist','unordered-list-button','Unordered list']
,['outdent','outdent-button','Outdent']
,['indent','indent-button','Indent']]
var button;
for(var i=0;i<buttons.length;i++) {
button = lowerToolbar.appendChild(document.createElement('a'));
button.className = buttons[i][1];
button.title = buttons[i][2]
button.onclick = function() { rte.rteCommand(buttons[i][0]); }
}
Selve problemet ligger i dette her stykke:
button.onclick = function() { rte.rteCommand(buttons[i][0]);
da det viser sig at JS forsøger at kalde rteCommand med buttons[i][0] som argument når onclick bliver triggered, istedet for værdien af buttons[i][0] (f.eks. 'bold').
Nogen ide til hvordan dette kan løses ?