2009-04-25 39 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'); 
相關問題