2009-04-25 17 views
17

tworzę wejście użytkownika na jednej z imprez:Dodaj właściwość onclick do wejścia z 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); 
} 

... ale spowoduje wejście nie ma onclick nieruchomości. Zamiast tego próbowałem użyć

... ale nie działałem. Co ja robię źle?

+1

Czy już zadeklarował wszystkich tych zmiennych? Jeśli nie, używasz "implied globals", co nie jest zbyt dobre - ustaw je na zmienne lokalne, deklarując je słowem kluczowym "var". –

Odpowiedz

30

Spróbuj tego:

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

Steve

+0

Próbowałem, ale dane wejściowe nie otrzymały właściwości onclick. Co może się tam dziać? – Alex

+0

W jaki sposób określasz, czy wejście ma funkcję "onclick" czy nie? –

+0

Przechodzę do FireBug i zajrzyj do sekcji "HTML", jeśli ma. – Alex

2

myślę, że może chcesz uciec \ r \ n, jeśli zamierzają przekazać te ...

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

I don nie widzę co twój handler próbuje osiągnąć ...

+0

Ah, nie ma problemu, działa dobrze (wysyła linię przez gniazdo TCP). Naprawdę utknąłem z dołączaniem właściwości onclick do znacznika wejściowego. – Alex

6

Wystąpił problem z jedną z twoich linii; Poprawiłem to dla Ciebie:

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

Czy to ma więcej sensu?

+0

Tak właśnie było, dziękuję. – Alex

1

Jest to jeden z powodów, dlaczego zdecydowałem się użyć jQuery:

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