Question: I've added a CKEditor instance programmatically to my page in the code-behind of my ASP.NET page:

VB.NET:

```
itemEditor = New CkEditor
cell.Controls.Add(itemEditor)

```

... which works fine. I can get the HTML on the postback and do stuff with it.

However, I also want to do some client-side stuff with it, specifically take a selected item out of another control, and insert it into the text by handling the `onchange` event.

So, how can I get the name of the editor instance in the JavaScript, so that I can do stuff like:

```
function GetCkText()
{
    var htmlFromEditor = CKEDITOR.instances['editorName'].getData();
    // do stuff with htmlFromEditor
}

```

Answer: 
Assuming you only have one editor instance:

```
for ( var i in CKEDITOR.instances ){
   var currentInstance = i;
   break;
}
var oEditor   = CKEDITOR.instances[currentInstance];

```

Here is what the JavaScript API says about [instances](http://docs.cksource.com/ckeditor_api/symbols/CKEDITOR.html#.instances).

Here is another way of defining the CKEditor. Here 'fck' is the input fields id:

```
CKEDITOR.replace( 'fck', {
    customConfig : prefix + 'js/ckeditor/config.js',
    height: 600,
    width: 950
});

editor = CKEDITOR.instances.fck;

```

Notice how I am then able to reference the instance using `.fck`.
Well I've found a way... but I don't like it much... 

I've added a Hidden Field control to the page, after adding the editor, and put the editor's ClientId in its value:

```
Dim hdn As New HiddenField
With hdn
    .ID = "HiddenField"
    .Value = itemEditor.ClientID
End With
cell.Controls.Add(hdn)

```

.. and then in the JavaScript, I can get the hidden field, and hence the editor name as follows:

```
function GetCkText()
{
    var hdn = document.getElementById("HiddenField");
    var editorName = hdn.getAttribute("value");
    var editor = CKEDITOR.instances[editorName];
    alert(editor.getData());
    return false;
}

```

But it's a bit inelegant, to say the least. Anyone got a better way?