2009-04-25 16 views
17

Estoy creando una entrada de usuario en uno de los eventos:Añadir propiedad onclick a la entrada con 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); 
} 

... pero la entrada resultante no tiene onclick propiedad. Traté de usar

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

... en su lugar, pero tampoco funcionó. ¿Qué estoy haciendo mal?

+1

¿Ya ha declarado todas esas variables? Si no, estás usando "globales implícitos" que no son muy buenos; conviértalos en variables locales declarándolos con la palabra clave "var". –

Respuesta

30

Prueba esto:

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

Steve

+0

Lo intenté, pero la entrada no obtuvo la propiedad onclick. ¿Qué podría estar pasando allí? – Alex

+0

¿Cómo determina si la entrada obtuvo la función "onclick" o no? –

+0

Voy a FireBug y miro en la sección "HTML" si lo tiene. – Alex

2

Creo que es posible que desee escapar de la \ r \ n, si la intención de pasar estos ...

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

Pongo No veo exactamente qué trata de lograr su controlador onclick ...

+0

Ah, no hay problema con eso, funciona bien (envía una línea a través de un socket TCP). De hecho, estoy atascado con adjuntar la propiedad onclick a la etiqueta de entrada. – Alex

6

Hay un problema con una de sus líneas aquí; Lo he corregido por usted:

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); 
} 

¿Tiene más sentido?

+0

Eso es lo que era, gracias. – Alex

1

Ésta es una de las razones por las que he decidido utilizar jQuery:

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