Ciao ragazzi,

ho scritto una classe di cui riporto il pezzo di codice incriminato:
codice HTML:
<script>
(function() {
  "use strict";
    
    /* [...] */
  var Keyboard = {

    /* [...] */
    get_tooltip : function() {
      var   _this    = this
          , value    = this.innerHTML
          , position = Keyboard.get_position(this);

      if (special_chars_1.indexOf(value) == -1 &&
          special_chars_2.indexOf(value) == -1)
      {
        (!Keyboard.caps_lock ? lower_chars : upper_chars).forEach(function(v, k, a) {
          if (v.length > 1 && value == v[0]) {
            var   left = 0
                , i    = 0;
            
            for (; i < v.length; i++) {
              var div = document.createElement("div");
                  
              div.setAttribute("id"     , "uniq_" + i);
              div.setAttribute("class"  , "prova prova2");
              div.setAttribute("style"  , "top: " + (position.top - 42) + "px; left: " + (position.left + left) + "px;");
              div.setAttribute("onClick", "Keyboard.insert_char(this.innerHTML)");
              div.innerHTML = v[i];
                  
              document.body.appendChild(div);
              
              Keyboard.tooltip[i]    = new Array();
              Keyboard.tooltip[i][0] = i;
              Keyboard.tooltip[i][1] = _this;

              left += 40;
            }
          }
        });
      }
    },
      
    insert_char : function(add) {
      var password = document.getElementById('password');
      
      password.value = password.value + add;
    },
      
    /* [...] */
  }
</script>
Se potete notare la riga: div.setAttribute("onClick", "Keyboard.insert_char(this.innerHTML)"); non funzionerà mai perchè ovviamente la classe Keyboard la definisco dentro a una funzione, ed anche se definisco var Keyboard = {}; al di fuori di essa non funziona.