2009-04-25 32 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”关键字声明局部变量来使它们成为局部变量。 – 2009-04-25 22:41:00

回答

30

试试这个:

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

史蒂夫

+0

试过了,但输入没有得到onclick属性。那里可能会发生什么? – Alex 2009-04-25 22:29:40

+0

你如何确定输入是否具有“onclick”功能? – 2009-04-25 22:43:42

+0

我去FireBug并在“HTML”部分查看是否有它。 – Alex 2009-04-25 23:27:36

2

我想你可能会想逃离\ r \ n,如果你打算通过这些...

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

我不不太明白你的onclick处理程序试图实现什么...

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

这是否更有意义?

1

这也是为什么我决定使用jQuery的原因之一:

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