2009-04-25 4 views
17

Я создаю ввод данные пользователя в одном из событий:Добавить OnClick свойства для ввода с 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); 
} 

... но в результате ввод не имеет OnClick свойства. Я попытался использовать

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

... вместо этого, но не работал. Что я делаю не так?

+1

Вы уже объявили все эти переменные? Если нет, вы используете «подразумеваемые глобальные переменные», что не очень хорошо - сделайте их локальными переменными, объявив их ключевым словом «var». –

ответ

30

Попробуйте это:

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

Стив

+0

Пробовал, но вход не получил свойство onclick. Что там может быть? – Alex

+0

Как вы определяете, получил ли вход функцию «onclick» или нет? –

+0

Я иду в FireBug и смотрю в разделе «HTML», если он есть. – Alex

2

Я думаю, что вы можете захотеть, чтобы избежать \ г \ п, если вы намерены передать эти ...

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

Я надеваю 't совершенно вижу, что ваш обработчик onclick пытается достичь ...

+0

Ах, нет проблем с этим, он отлично работает (он отправляет строку через сокет TCP). Я фактически застрял с прикреплением свойства onclick к входному тегу. – Alex

6

Существует проблема с одной из ваших линий здесь; Я исправил это для вас:

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

В этом смысл?

+0

Вот что было, спасибо. – Alex

1

Это одна из причин, почему я решил использовать JQuery:

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