2009-04-25 8 views
17

sto creando un input dell'utente in uno degli eventi:Aggiungi proprietà onclick all'ingresso 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); 
} 

... ma l'ingresso risultante non ha onclick proprietà. Ho provato a usare

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

... invece, ma non ha funzionato neanche. Che cosa sto facendo di sbagliato?

+1

Avete già dichiarato tutte queste variabili? In caso contrario, si stanno utilizzando "globali impliciti" che non sono molto validi, rendendoli variabili locali dichiarandoli con la parola chiave "var". –

risposta

30

Prova questo:

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

Steve

+0

Provato, ma l'input non ha ottenuto la proprietà onclick. Cosa potrebbe succedere lì? – Alex

+0

Come si determina se l'input ha la funzione "onclick" oppure no? –

+0

Vado a FireBug e guardo nella sezione "HTML" se ce l'ha. – Alex

2

Penso che si potrebbe voler sfuggire al \ r \ n, se avete intenzione di passare questi ...

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

I don Vediamo esattamente cosa prova il tuo gestore onclick a raggiungere ...

+0

Ah, nessun problema, funziona perfettamente (invia una linea tramite un socket TCP). In realtà sono bloccato ad associare la proprietà onclick al tag di input. – Alex

6

C'è un problema con una delle tue linee qui; L'ho corretto per voi:

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

Ha più senso?

+0

Questo è quello che è stato, grazie. – Alex

1

Questo è uno dei motivi per cui ho deciso di usare jQuery:

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