web-dev-qa-db-fra.com

Ajouter une propriété onclick pour entrer avec JavaScript

Je crée une entrée utilisateur lors de l'un des événements:

var throwConnectBox = function() {
    chat_box = document.getElementById('box');
    div = window.parent.document.createElement('div');
    input = window.parent.document.createElement('input');
    input.type = "submit";
    input.value = "Join chat";
    input.onclick = "conn.send('$connect\r\n');";
    div.appendChild(input);
    chat_box.appendChild(div);
}

... mais l'entrée résultante n'a pas de propriété onclick. J'ai essayé d'utiliser

    input.onclick = conn.send('$connect\r\n');

... à la place, mais ça n'a pas marché non plus. Qu'est-ce que je fais mal?

22
Alex

Essaye ça:

 input.onclick = function() { conn.send('$connect\r\n'); };

Steve

39
Steve Harrison

Il y a un problème avec l'une de vos lignes ici; Je l'ai corrigé pour vous:

 var throwConnectBox = function() {
     chat_box = document.getElementById('box');
     div = window.parent.document.createElement('div');
     input = window.parent.document.createElement('input');
     input.type = "submit";
     input.value = "Join chat";
     /* this line is incorrect, surely you don't want to create a string? */
     // input.onclick = "conn.send('$connect\r\n');";?
     input.onclick = function() { 
         conn.send('$connect\r\n'); 
     };
     div.appendChild(input);
     chat_box.appendChild(div);
 }

Est-ce que ça fait plus de sens?

6
Billy Back Bedroom

Je pense que vous voudrez peut-être échapper au\r\n, si vous avez l'intention de passer ces derniers ...

conn.send('$connect\\r\\n')

Je ne vois pas vraiment ce que votre gestionnaire onclick essaie de réaliser ...

2
Peter Perháč

C'est l'une des raisons pour lesquelles j'ai décidé d'utiliser jQuery:

 $('<input type="submit" value="Join chat" />')
      .click( function() { conn.send('$connect\r\n'); } )
      .appendTo('<div></div>')
      .appendTo('#box');
1
tvanfosson