2009-04-25 9 views
17

Je crée une entrée utilisateur à l'un des événements:Ajouter une propriété onclick entrée avec JavaScript

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ésultant ne pas onclick propriété. J'ai essayé d'utiliser

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

... à la place, mais ne fonctionnait pas non plus. Qu'est-ce que je fais mal?

+1

Avez-vous déjà déclaré toutes ces variables? Si ce n'est pas le cas, vous utilisez des "globales implicites" qui ne sont pas très bonnes - faites-en des variables locales en les déclarant avec le mot-clé "var". –

Répondre

30

Essayez ceci:

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

Steve

+0

J'ai essayé, mais l'entrée n'a pas obtenu la propriété onclick. Qu'est-ce qui pourrait se passer là-bas? – Alex

+0

Comment déterminez-vous si l'entrée a la fonction "onclick" ou pas? –

+0

Je vais à FireBug et regarde dans la section "HTML" s'il l'a. – Alex

2

Je pense que vous pouvez échapper à la \ r \ n, si vous avez l'intention de les transmettre ...

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

Je don Ne voyez pas ce que votre gestionnaire onclick essaie de réaliser ...

+0

Ah, pas de problème avec ça, ça marche bien (ça envoie une ligne via un socket TCP). Je suis en fait coincé avec attacher la propriété onclick à la balise d'entrée. – Alex

6

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 cela a plus de sens?

+0

Voilà ce que c'était, merci. – Alex

1

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

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